我有这个练习:
Test (int n)
if(n<=81) then return 1
k=1
h=1
while(k<=n)
for j=1 to k do
c++
k=k+2
return 9*h + Test(n/3)
我必须在最坏的情况下计算执行时间。我有点困惑,因为在类似的练习中:
Exercise(int n)
c=1
m=n*n
while(m>1) do
for j=1 to m do
c++
m=m/2
if(n>1) then Exercise(n/2)
执行时间是(n ^ 2)因为m从n ^ 2开始并且每次被除以2所以n ^ 2/2 ^ i = 1
其中i是迭代。
在第一次练习时,我得到k = k + 2,所以每次迭代都加2。
n + 2 * i = 1 - &gt; I = N / 2
所以执行时间是
n/2
∑ n+2*i = (n^2)
i=0
我认为是正确的,但有些事情告诉我,我应该考虑最后一行return 9*h + Test(n/3)