You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

递归判断奇偶的EvenOdd函数始终返回undefined问题求助

问题分析与修复

嘿,我一眼就看出问题所在啦——你的递归调用没有返回结果给上层函数!

咱们来拆解一下原代码的执行逻辑:
当你调用EvenOdd(49)时,函数会不断执行num -= 2然后递归调用自己,直到num变成1,这时候触发if (num == 1) return 'odd'。但这个返回值只停留在当前的递归层级,上层的递归调用并没有把这个结果传递回去,最外层的函数自然就没有返回值,最终输出undefined。

修复后的代码

只需要在递归调用前加上return,让每一层递归的结果都能向上传递:

function EvenOdd(num) { 
  if (num === 0) return 'even'; 
  if (num == 1) return 'odd'; 
  num -= 2; 
  return EvenOdd(num); // 这里加上return!
}
console.log(EvenOdd(49)); // 现在会输出'odd'

额外优化建议

其实用递归做奇偶判断有点绕,用取模运算符%可以更简洁高效,还能兼容正负数的情况:

function EvenOdd(num) {
  return num % 2 === 0 ? 'even' : 'odd';
}

内容的提问来源于stack exchange,提问作者user9295933

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 03:29:13