使用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之间有什么区别?
答案 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;
}