2014-09-02 115 views
-3

使用return 1:使用return語句有什麼區別?

function factorial(n){ 
    if(n===0){ 
    return 1; //or return true; 
    } 
    return n * factorial(n-1); 
} 
->factorial(5); 
<-120 

使用return 0:

function factorial(n){ 
    if(n===0){ 
    return 0; //or return false; 
    } 
    return n * factorial(n-1); 
} 
->factorial(5); 
<-0 

使用return:

function factorial(n){ 
    if(n===0){ 
    return; // I don't know what it returns (true or false)? 
    } 
    return n * factorial(n-1); 
} 
->factorial(5); 
<-NaN 

那麼,什麼是收益之間的差異,返回0或假,返回1還是真的?

+2

一個空返返回「未定義」 – 2014-09-02 07:19:03

+0

我不知道是什麼返回(true或false)「 - 既不是'undefined' – 2014-09-02 07:21:23

+0

這取決於你如何處理它 – 2014-09-02 07:22:46

回答

1

你基本上形成乘法運算鏈:

factorial(3) * factorial(2) * factorial(1) .. 

這可以歸結爲

3 * 2 * 1 .. 

return你改變值將是這個鏈條的最後一部分。如果這最後一部分是1,你會得到你的正常結果。如果最後一部分是0,則整個結果爲0,因爲任何乘以0的值都是0.如果您沒有明確返回任何內容,則最後一個值爲undefined,而乘法操作的值不是數字得到值NaN(不是數字),這基本上意味着結果沒有意義。

0
function factorial(n){ 
    if(n===0){ 
    return 1; // actually here return 1 is necessary because it is using for multiplication in "n" 
    } 
    var x = factorial(n-1) ; //when n value will be n=1 then it return 1 so last return will be 5X4X3X2X(1 not 0 or true or false) 
    return n*x; 
} 
相關問題