2015-05-17 18 views
-5

我正在嘗試創建一個腳本,它將返回輸入數的階乘作爲挑戰的一部分。當我嘗試運行它時,它會返回適當的因子,但顯然我以某種方式做錯了。在JavaScript中返回析構因子

它看起來像這樣:

function FirstFactorial(num) { 
    if (num > 1) { 
    var x = num; 
    for (var i = 1; i < x; i++) { 
     num = num * i; 
    } 
    } else if (num === 1) { 
    return 1; 
    } else { 
    console.log("That's not a number!"); 
    } 
    return num; 
}  

然後我試圖做這樣的,但它仍然無法正常工作!

function FirstFactorial(num) { 

    if (num < 0) { 
    num = 0; 
    console.log("You have to input a number!"); 
    } 

    if (num === 0) { 
    return 1; 
    } 

    return num * FirstFactorial(num - 1); 
} 
+2

你說它的工作原理,但「我以某種方式做錯了」......告訴我們更多? – KenD

+3

*「但顯然我做錯了。」*這是什麼意思? –

+2

「尋求調試幫助的問題(」爲什麼這個代碼不工作?「)必須包含所需的行爲,特定的問題或錯誤以及在問題本身中重現問題所需的最短代碼。聲明對其他讀者沒有用***「 –

回答

1

最有可能的原因是他們期望並希望您使用遞歸(一種自我調用的函數)。

如果您考慮階乘因子,每個因子都建立在前一個階段的結果上,這是使用遞歸的經典案例。

(請注意,我特別不發佈代碼遞歸這樣做,因爲那時這裏的關鍵是工作,如何做到這一點。)