2014-09-02 113 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; 
} 
相关问题