我想要使用遞歸和沒有循環來獲得數組的所有數字的階乘(recurArray)。 我得到錯誤「最大調用堆棧大小超出」 我認爲有一些問題在for循環的邏輯,將是有益的,如果有人能解釋錯誤的原因以及如何解決它遞歸地獲取數組的所有數的階乘
感謝。
//代碼
function recur(){
var n;
var result;
if(n == 1)
return 1;
var recurArray = [5,6,7,8,9];
for (var i = 0;i<recurArray.length;i++){
n = recurArray[i];
result = n * recur(n-1);
n=n-1;
}
console.log("val of n " + n + "value of i " + i);
return result;
}
recur();
你的'recur'函數沒有任何參數? – Bergi
是的,如果你不想使用循環,你絕對不應該使用'for'循環 – Bergi
[JavaScript中的快速析因函數]的可能重複(http://stackoverflow.com/questions/3959211/fast-factorial-函數在JavaScript中) – dave