我猜它停止由達夫代碼瀏覽器越來越釘所有的時間,但這樣的:JavaScript中遞歸的限制是多少?
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遞歸?我有興趣使用遞歸來導航樹,您需要爲每個孩子調用方法。
'如果(int <10)'會失敗if塊並停止遞歸。這是任何語言的預期行爲。 – jiggy
請避免命名變量「int」。雖然它在js中可能是合法的,但這是令人困惑的,因爲它是許多其他語言中的保留字。 –
該方法的兩個版本應該返回相同的代碼,然後他們不會第二個產生大量的數字,因爲我期望該方法自動調用兩次。對於(i = 0; i <= 1; i ++), – gordatron