您好,欢迎来到叨叨游戏网。
搜索
您的当前位置:首页用闭包替换递归实现斐波拉契数列

用闭包替换递归实现斐波拉契数列

来源:叨叨游戏网

斐波拉契数列的典型特征是下一项是由前两项组成的和,我们有很多方式可以实现。

他们的实现重点都是记录值,我们也可以说,能够做值记录的方法都可以实现斐波拉契数列。

数组方法

var newItem = arr => {
  return arr[arr.length - 1] + arr[arr.length - 2];
};

var allItem = itemNum => {
  let arr = [1, 1];

  for (let i = 0; i < itemNum - 2; i++) {
    arr.push(newItem(arr));
  }

  return arr;
};

console.log(allItem(10));
复制代码

该方法最为直观,对数组尾项进行操作。

递归运算

let result = [1, 1];

var arrHandle = itemNum => {
  result.push(result[result.length - 1] + result[result.length - 2]);

  if (result.length !== number) {
    goback(itemNum);
  }
};

arrHandle(10);
console.log(result);
复制代码

该方法的result必须放在函数外部,并且函数不纯,改变了result,对后面的操作有影响。

闭包运算

let arrHandle = () => {
  let result = [1, 1];

  return itemNum => {
    for (let i = 0; i < itemNum - 2; i++) {
      let newItem = result[result.length - 1] + result[result.length - 2];
      result.push(newItem);
    }

    return result;
  };
};

let getAllItem = arrHandle();
console.log(getAllItem(10));
复制代码

该方法封装了一个闭包,对值的保存与操作类似第一种。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.net 版权所有 湘ICP备2024080961号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务