2014-01-14 108 views
0

我似乎無法弄清楚這段代碼有什麼問題 - >一直拋出「超出最大調用堆棧大小」的錯誤。Javascript - >如何遞歸添加一個數組數組?

function arrayIntSum(array) { 
    if (array === []){ 
     return 0; 
    } 
    else return array.shift() + arrayIntSum(array); 
} 
+0

你事件試過調試,改變你的條件之前問這裏? -1 for slzyness – DontVoteMeDown

+0

供參考:'array.reduce(function(sum,n){return sum + n;},0);' –

+0

@DontVoteMeDown,你能告訴我應該如何解決這個問題嗎?我只進行了2個月的編程,有時候搞清楚如何進行調試對算法本身而言,與我一樣困惑。 –

回答

9

Javascript對象通過引用進行對比。

[]創建一個新的數組實例,它將永遠不會等於您的變量。

你想檢查length

+0

感嘆。是。我不應該錯過這個。感謝您的解釋! –

2
function arrayIntSum(array) { 
    if (array.length === 0){ 
     return 0; 
    } 
    else return array.shift() + arrayIntSum(array); 
} 
+1

-1沒有解釋答案 –

1

你應該這樣檢查: 則爲a.length == 0

你相比用[],是一個 '[]' literal,它有不同的內存空間。和a有不同的內存空間。所以他們永遠不會平等。所以遞歸交叉限制