你好,我是学习Js的新手 我正在尝试学习递归,但是我一直停留在这里
var isEven = (number) =>{
number = Number(number)
if(number === 0){
console.log('it is even')
return true;
}
else if(number === 1){
return false;
}
else{
number = number - 2;
isEven(number);
}
}
console.log(isEven(50) === true)
为什么最终结果变得不确定?谢谢您的帮助
答案 0 :(得分:1)
在递归调用中添加收益:
function isEven(number){
number = Number(number)
if(number === 0){
console.log('it is even');
return true;
}
else if(number === 1){
return false;
}
else{
number = number - 2;
return isEven(number);
}
}
console.log(isEven(50));
答案 1 :(得分:0)
您必须在递归调用中使用return。如果您不使用return,则isEven(50)函数将运行但不返回isEven(48),因此您的isEven(50)函数未定义,因此请始终使用return。 例子
function factorial( n ) {
if ( n === 1 ) {
return 1;
}
return n * factorial( n - 1 );
}
在上面的示例中,您可以在我们调用阶乘(n-1)时;它将返回(n-1)* factorial(n-2);但是如果您删除返回值,则结果未定义为阶乘(n-1);不返回任何东西。 永远记住,在递归中,重点是一次又一次地返回函数,直到获得结果为止。