アルゴリズム:
for (int i = 0; i < 2*n; i += 2)
for (int j = n; j >i; j--)
foo();
foo()が呼び出された回数を調べたい。
# of foo() calls for the second loop as i changes:
1st loop: n - 0
2nd loop: n - 2
3rd loop: n - 4
nth loop: n - f(x); f(x) = last term +2; where f(0) = 0
Total # calls = Summation(n - f(x)) from [i = 0] to [i = n/2 (where f(x) == n)]
= Summation(n) - summation(f(x))
= (n/2)(n+n)/2 - (n/2)(0 + n)/2
= n^2/2 - n^2/4
= n^2/4
私はすべての作業を行いましたが、私の方程式は常に少しずれた値を示します。
n = 5の場合:記録されたfoo()呼び出しは9ですが、私の方程式は6
になります。n= 6の場合:記録されたfoo()呼び出しは16ですが、私の方程式は9になります。
私は何を間違えましたか?