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

JavaScript递归countdown函数报错求助:返回数组顺序不符等问题

问题分析

当前代码的核心问题是递归逻辑导致数组顺序错误:调用countdown(n-1)会返回从1到n-1的升序数组,之后用push(n)把n添加到数组末尾,最终得到的是升序结果(比如countdown(5)返回[1,2,3,4,5]),不符合题目要求的降序输出。同时题目明确禁止使用全局变量缓存数组,所以需要调整递归构建数组的方式。

解决方案

我们可以通过将当前值n放在数组头部,再拼接递归得到的n-1的降序数组来实现需求,全程依赖递归返回值构建结果,不使用任何全局变量。

方案1:使用concat方法

function countdown(n){
    if (n < 1){
        return [];
    }else{
        // 先创建包含当前n的数组,再拼接n-1的递归结果
        return [n].concat(countdown(n - 1));
    }
}

方案2:使用扩展运算符(更简洁)

function countdown(n) {
    // 三元表达式简化逻辑,扩展运算符替代concat
    return n < 1 ? [] : [n, ...countdown(n - 1)];
}
验证效果
  • countdown(5) 返回 [5,4,3,2,1]
  • countdown(10) 返回 [10,9,8,7,6,5,4,3,2,1]
  • 未使用任何全局变量,完全符合题目要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 00:03:21