递归判断奇偶的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
相关产品推荐
相关产品推荐

