Javascript程序产生未定义(递归)
你好,我是学习Js的新手 我正试图学习递归,但我还是停留在这里Javascript程序产生未定义(递归),javascript,Javascript,你好,我是学习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(n
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)
为什么最终结果变得不明确?感谢您的帮助添加递归返回调用:
函数isEven(数字){
数字=数字(数字)
如果(数字==0){
log(“它是偶数”);
返回true;
}
else if(数字===1){
返回false;
}
否则{
数字=数字-2;
返回isEven(编号);
}
}
控制台日志(isEven(50))代码>在递归调用中必须使用return。如果不使用return,isEven(50)函数将运行,但不返回isEven(48),因此您的函数isEven(50)未定义。因此始终使用return。
范例
在上面的例子中,当我们称为阶乘(n-1)时,你可以;它将返回(n-1)*阶乘(n-2);但如果u去除返回,则结果未定义为阶乘(n-1);不要归还任何东西。
始终记住,在递归中,重点是一次又一次地返回函数,直到得到结果。返回isEven(数字)代码>
function factorial( n ) {
if ( n === 1 ) {
return 1;
}
return n * factorial( n - 1 );
}