在下面的腳本中,爲什麼badFactorial
是堆棧而goodFactorial
工作?JavaScript因子遞歸
function badFactorial(n){
if(n < 0){
return 1;
}
if(n < 2){
return n;
}
return badFactorial(n * (n-1));
}
function goodFactorial(n){
if(n < 2){
return n;
}
return goodFactorial(n-1) * n;
}
你用什麼叫'badFactorial'? – 2014-12-05 14:50:53
,因爲它的目的是這樣嗎? (以名稱命名) – 2014-12-05 14:52:39
因爲在badFactorial(n *(n-1))中,n的值總是呈指數增長。它永遠不會達到0.這就是爲什麼你會得到這個錯誤。而在第二種情況下,每次遞減n對於任何遞歸函數都非常重要。 – mohamedrias 2014-12-05 14:54:29