我在編碼階乘n時正在做一個基本的問題!:有關改進我的代碼(JavaScript)中(負)因數的任何建議?
function factorialize(num) {
if (num < 0) {
return undefined;
} else if (num === 0) {
return 1;
}
else {
return num * factorialize(num - 1);
}
}
網站我是從接受了這個解決方案的學習,但他們只是在測試的非負整數,即對ň≥0,而不是負整數。
我很好奇如何計算負因子(-n)!。許多網頁都說它沒有定義,但我發現有兩個說它可以被定義。
我得到的要點是:
| N | = |(-n)!|
它們的絕對值是相同的,但負因子變化的跡象。
例子:
4! =(-4)! = 24
5! = 120但是(-5)! = -120
,我從兩個鏈接的網頁收集其計算公式爲:
(-N)! = | n |! *(-1)^ n
這反映了我的代碼。從測試案例來看,我認爲我已經確定了它。我只想問問是否有更好的編碼方式。來自here 的人指出,使用遞歸是內存效率低下的。
function factorialize(num) {
if (num === 0) {
return 1;
} else if (num > 0) {
return num * factorialize(num - 1);
} else {
return Math.pow(-1, num) * Math.abs(num) * factorialize(Math.abs(num) - 1);
}
}
// test cases below
console.log(factorialize(-1)); // -1
console.log(factorialize(1)); // 1
console.log(factorialize(0)); // 1
console.log(factorialize(-2)); // 2
console.log(factorialize(2)); // 2
console.log(factorialize(-3)); // -6
console.log(factorialize(3)); // 6
console.log(factorialize(-4)); // 24
console.log(factorialize(4)); // 24
console.log(factorialize(-5)); // -120
console.log(factorialize(5)); // 120
我覺得你的問題是更切合主題,以[CR](http://codereview.stackexchange.com/)比SO – hindmost
@天誅地滅,感謝小費 – elp1987
如果您決定到那裏張貼,注意你的問題可以使用一些工作。在你明確表達你想要做的事情之前,我必須閱讀你的問題3次。 – Mast