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

如何用递归实现检查数组内所有数字元素均为偶数的功能?

错误原因

  • 你的递归逻辑缺失了当前层级第一个数组元素的奇偶判断,错误地将递归返回的布尔值参与取模运算,布尔值在参与算术运算时会被隐式转换为数字:true转1,false转0,导致整个判断逻辑完全偏离预期。
  • 以你出错的测试用例[2,4,6,9]为例,递归到最后一层处理[9]时,会先调用isEven([])得到true,计算true % 2 === 0得到false,再往上回溯时false % 2 === 0会被判定为true,最终层层返回错误的true结果。

正确递归实现

递归的核心逻辑应该是:

  1. 基线条件:数组为空时,视为所有元素都满足条件,返回true
  2. 递归条件:当前第一个元素是偶数 并且 剩余子数组的所有元素都是偶数

正确代码如下:

const isEven = (arr) => 
  arr.length === 0 
    ? true 
    : arr[0] % 2 === 0 && isEven(arr.slice(1));

console.log(isEven([2,4,6,8])); // true
console.log(isEven([2,4,6,9])); // false

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:06:04