我有这个问题来计算时间复杂度吗?
const iterate = a => {
if (a === 5) {
return;
}
for (var i = 0; i <= a; i++) {
console.log(i);
iterate(i + 1);
}
};
iterate(0);
答案 0 :(得分:1)
您会得到一个无限循环,因为您将目标值增加了一个,但您以{0开头的for
语句开始了,并且该值直到到达堆栈末尾时才改变。
for (var i = 0; i <= a; i++) {
console.log(i);
iterate(i + 1);
}
这意味着您使用第一个零值再次调用该函数,然后该函数再次调用自身,依此类推。
结果是此未捕获的错误:
RangeError: Maximum call stack size exceeded
答案 1 :(得分:0)
算法复杂度仅针对必须通过(最常被接受的定义)终止的算法进行定义。
上面的代码重复无数次。因此无法确定代码的时间复杂度。
有人可能会说 O(n),其中 n =>无穷大。
上面的代码没有停止,因为没有条件将'i'的值增加到无穷大。