我对下面一段代码的时间复杂性感到有点困惑(限制是硬编码引用的例子):
loss = 3;
for(i=0;i<=10;)
{
i += loss;
loss = loss - 0.3; //loss keeps decreasing by some fixed value
}
虽然变量i
正在逐渐增加接近终止循环,但它增加的速率本身是可变的。
答案 0 :(得分:0)
在这个具体的例子中,时间复杂度是O(1)
因为,因为它没有参数,所以它总是需要相同的时间才能执行。
如果你的for循环中的那个数字10
是一个参数n
,如果O(n)
足够大,n
就会n
&#34;损失&#34;最终将变为负面,程序将永远运行。 &#34;损失&#34;以恒定的数量影响时间复杂度。