for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
for (int k = j + 1; k < n; k++) {
count++;
}
}
}
以上循环中,count最后的值是怎么算出来的,求个计算过程,哪个大佬帮忙解答下,我算着算着老是绕晕了
for (int i = 0; i < n; i++) {
for (int j = i + 1; j < n; j++) {
for (int k = j + 1; k < n; k++) {
count++;
}
}
}
以上循环中,count最后的值是怎么算出来的,求个计算过程,哪个大佬帮忙解答下,我算着算着老是绕晕了
https://www.wolframalpha.com/...
sum_(i=0)^(n - 1)( sum_(j=i + 1)^(n - 1)( sum_(k=j + 1)^(n - 1) 1)) = 1/6 n (n^2 - 3 n + 2)
内部循环的次数受外部循环影响,加操作是在最内层循环,所以n不够大(小于3)的时候拿到的都是0
在后面的规律是这样:
公式不会推…思路的话
可以把k这层循环去掉,只观察i和j两层,k和j的关系 和 j和i的关系是一样的
可以在 count++ 后面接一句输出,观察变化
System.out.printf("count = %d, i = %d, j = %d, k = %d\n", count, i, j, k);
3 回答2.7k 阅读✓ 已解决
3 回答4.2k 阅读✓ 已解决
8 回答3.8k 阅读
4 回答2.8k 阅读✓ 已解决
2 回答2.7k 阅读✓ 已解决
3 回答2.6k 阅读✓ 已解决
4 回答1.9k 阅读
则 k 这层循环的执行总次数为:
相当于计算 (0·1 + 1·2 + 2·3 + ... + (n-2)(n-3))/2 即 ((1^2 + 2^2 + ... + (n-2)^2) + (1 + 2 + ... + n-2))/2
n^2的求和公式是n(n+1)(2n+1)/6
n的求和公式为n(n+1)/2