使用return语句有什么区别?

时间:2014-09-02 07:18:07

标签: javascript

使用return 1:

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

那么,return,return 0或false,return 1还是true之间有什么区别?

2 个答案:

答案 0 :(得分:1)

你基本上形成了一系列乘法运算:

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

归结为

3 * 2 * 1 ..

您正在更改的return值将成为此链的最后一部分。如果最后一部分是1,您将获得常规结果。如果最后一部分是0,那么整个事物的结果是0,因为任何乘以0的都是0.如果你没有明确地返回任何东西,那么最后一个值是undefined ,并且使用非数字的乘法运算产生值NaN(非数字),这实质上意味着结果没有意义。

答案 1 :(得分: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;
}