gpt4 book ai didi

javascript - javascript 中的递归有多大限制?

转载 作者:行者123 更新时间:2023-11-28 12:07:49 27 4
gpt4 key购买 nike

我猜它是为了阻止浏览器一直被无用的代码所困扰,但是这个:

        function print(item) {
document.getElementById('output').innerHTML =
document.getElementById('output').innerHTML
+ item + '<br />';
}

function recur(myInt) {
print(myInt);
if (int < 10) {
for (i = 0; i <= 1; i++) {
recur(myInt+1);
}
}
}

产生:

0
1
2
3
4
5
6
7
8
9
10
10

而不是我这样做时遇到的大麻烦:

        function recur(myInt) {
print(myInt);
if (int < 10) {
for (i = 0; i <= 1; i++) {
var x = myInt + 1;
setTimeout("recur("+x+")");
}
}
}

我错过了什么或者这就是你在 JS 中进行递归的方式吗?我对使用递归导航树感兴趣,您需要为每个子级调用该方法。

最佳答案

您正在使用全局变量作为循环计数器,这就是为什么它只针对最里面的调用完全循环。当您从该调用返回时,计数器已超出所有其他循环的循环结束位置。

如果你创建一个局部变量:

function recur(int) {
print(int);
if (int < 10) {
for (var i = 0; i <= 1; i++) {
recur(int + 1);
}
}
}

输出的项目数与使用超时时的项目数相同。当您使用超时时,全局变量不会导致同样的问题,因为当您退出循环时,递归调用会排队并稍后执行。

关于javascript - javascript 中的递归有多大限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7285820/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com