除了遞歸地進行階乘之外,我們如何使用for循環解決?因子乘以數字本身
function factorial(num){
for(var i=num;i>0;i--){
num*=i
}
return num;
}
factorial(3);
//18
答案應該是6,但打印18
當我運行這段代碼說任何數x,階乘的結果再次通過X相乘。 階乘(3)給出了6 * 3 ... 階乘(5)提供了120 * 5.什麼可能是問題?.Thanks
除了遞歸地進行階乘之外,我們如何使用for循環解決?因子乘以數字本身
function factorial(num){
for(var i=num;i>0;i--){
num*=i
}
return num;
}
factorial(3);
//18
答案應該是6,但打印18
當我運行這段代碼說任何數x,階乘的結果再次通過X相乘。 階乘(3)給出了6 * 3 ... 階乘(5)提供了120 * 5.什麼可能是問題?.Thanks
您已經NUM作爲結果的價值,你這個值再乘以它。你可以用下一個較小的值開始迭代,並按照你已經做的迭代。
function factorial(num) {
for (var i = num - 1; i > 0; i--) {
num *= i;
}
return num;
}
console.log(factorial(3));
隨着while
循環,並用一前綴減量較短比較。
function factorial(num) {
var i = num;
while (--i) {
num *= i;
}
return num;
}
console.log(factorial(3));
你乘以本身的數量,這個不用做。 只需要乘以小於給定數字的數字即可得到階乘。
下面是相同的代碼片段:
function factorial(num){
for(var i=num-1;i>0;i--){
num*=i
}
return num;
}
factorial(3);
沒有[這](https://www.natashatherobot.com/factorials-javascript-recursion/)幫助? – marcellothearcane
如果你把這行改爲'for(var i =(num - 1); i> 0; i--){'它有效。另外,factorial(0)= 1,所以你需要一個if/else語句來排序。 ('if(num === 0){return 1} else {[for loop]}')它不處理負數,這將需要整理出來。 – marcellothearcane