Function f(n)
s = 0
i = 1
while i < 7n^1/2 do
j = i
while j > 5 do
s = s + i -j
j = j -2
end
i = 5i
end
return s
end f
我正在尝试使用上面的代码解决 big theta 的运行时间。我一直在到处寻找可以帮助我举个例子的东西,但一切都是 for 循环或只有一个 while 循环。您将如何使用嵌套的 while 循环解决这个问题?
让我们将其分解为两个关键点:
i
从 1 开始,自乘 5,直到大于或等于7 sqrt(n)
。这是对数步数的指数增长。因此,我们可以将代码更改为以下等效项:
m = floor(log(5, 7n^(1/2)))
k = 0
while k < m do
j = 5^k
// ... inner loop ...
end
对于外循环的每次迭代,j
从 开始i
,并以 2 的步长递减,直到小于或等于5
。请注意,在外循环的第一次执行中i = 1
,在第二次执行中i = 5
,因此直到第三次迭代才会执行内循环。循环限制意味着 的最终值为奇数时j
为 7,k
偶数时为 6(您可以用纸笔检查)。
结合以上步骤,我们得出:
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句