我对以下代码的时间复杂度有点困惑(限制是硬编码引用示例):
loss = 3;
for(i=0;i<=10;)
{
i += loss;
loss = loss - 0.3; //loss keeps decreasing by some fixed value
}
这里,虽然变量i
在不断增加接近终止循环,但它增加的速率本身是可变的。
最佳答案
在这个具体的例子中,时间复杂度是 O(1)
因为,因为它没有参数,它总是需要同样的时间来执行。
如果你的 for 循环中的那个数字 10
是一个参数 n
它会是 O(n)
对于一个小的 n
,如果 n
足够大,“loss”最终会变成负值,程序将永远运行。 “损失”对时间复杂度的影响是恒定的。
关于algorithm - 递减增量循环的时间复杂度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41171133/