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

如何将斐波那契函数结果存入数组?递归代码报错求解

问题解决:递归斐波那契函数生成数组及报错修复

报错原因

你写的recurseFivonaci(n)函数返回的是单个斐波那契数值(比如调用recurseFivonaci(10)会返回55),而map是数组专属方法,数字类型调用该方法自然会抛出TypeError。

解决方案

要生成包含从第0项到第n项的斐波那契数组,有两种可行方案:

方案1:修改递归函数直接返回数组

这种方式避免了原递归函数的重复计算问题,效率更高:

function fibonacciArray(n) {
  // 基础情况:n=0返回[0],n=1返回[0,1]
  if (n === 0) return [0];
  if (n === 1) return [0, 1];
  
  // 递归获取前n-1项的数组,再计算新项添加进去
  const prevArray = fibonacciArray(n - 1);
  prevArray.push(prevArray[prevArray.length - 1] + prevArray[prevArray.length - 2]);
  return prevArray;
}

// 生成0到10项的斐波那契数组
const result = fibonacciArray(10);
console.log(result); // 输出:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

方案2:保留原递归函数,循环生成数组

如果不想修改原递归函数,可以通过循环调用它来填充数组:

let result = [];
function recurseFivonaci(n){
  if(n < 2){
    return n;
  }
  return recurseFivonaci(n - 2) + recurseFivonaci(n - 1);
}

// 循环调用函数,把0到10的斐波那契数依次推入数组
for(let i = 0; i <= 10; i++){
  result.push(recurseFivonaci(i));
}

console.log(result); // 输出:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]

注意:方案2的原递归函数存在大量重复计算(比如计算第10项时会重复计算第9、8、...项多次),当n较大时性能会很差,推荐优先使用方案1。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 10:10:13