Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript程序产生未定义(递归)_Javascript - Fatal编程技术网

Javascript程序产生未定义(递归)

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

你好,我是学习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)

为什么最终结果变得不明确?感谢您的帮助

添加递归返回调用:

函数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 );
}