【发布时间】:2011-12-05 17:05:33
【问题描述】:
我对如何创建函数 T(n) 来测量嵌套无限循环的计算时间感到困惑。代码如下:
x=1;
for(int i = 0;i<n-1;i++){
for(int j = 1; j<=x; j++){
cout << j << endl;
x*=2;
}
}
所以内部循环将永远持续下去,我被困在尝试创建函数来表示其计算时间。我已经写过它的计算时间是 T(n) = [Summation i=0 until (n-2)] (2^j)。 2^j 表示 x 的值与来自内部循环的 j 的当前值。在与同行讨论后,我们绝对同意计算时间肯定不取决于 n 的值。我们也可能完全过度思考这一点,因为循环是无限的,根本没有办法表达它的计算时间。非常感谢任何帮助。
【问题讨论】:
-
我完全糊涂了。您想要无限循环的运行时间吗?它是无限的。顺便说一句,外循环是无关紧要的,因为内循环永远不会完成。此外,在实践中它可能不是无限的,因为如果 x 是整数类型,它最终会换行。
-
时间复杂度只对终止的算法有意义。
-
是的,我知道外循环是无关紧要的,是的,我知道为这样的事情设计计算算法没有意义,但我需要尝试 :)
标签: big-o infinite-loop