一、遍历的方式性能更加,递归的方式代码利于阅读、简短,性能略差

二、裴波那契数定义:

· 位置0的裴波那契数为0

· 1和2的裴波那契数为1

· n(n > 2)裴波那契数为 (n-1)的裴波那契数 + (n-2)裴波那契数

三、遍历的方式

fibonacciIterative (n) {
if (n < 1) {
return 0
}
if (n <= 2) {
return 1
}
let fibNMinus2 = 0
let fibNMinus1 = 1 let fibN = n for (let i = 2; i <= n; i++) {
fibN = fibNMinus1 + fibNMinus2
// 更新上一次的裴波那契数(n - 2)
fibNMinus2 = fibNMinus1
// 记录当前的裴波那契数(n - 1)
fibNMinus1 = fibN
} return fibN
} console.log(fibonacciIterative(10) // 55
四、递归的方式 function fn(n) {
const memo = [0, 1] function _fn(n) {
if(memo[n] !== undefined){
return memo[n]
} const result = _fn(n - 2) + _fn(n - 1)
memo[n] = result
return memo[n]
} return _fn(n)
} console.log(fn(10)) // 55
  /* 解析
    _fn(n - 1) // n的值 -> 9、8、7、6、5、4、3、2,首次的值为 memo[1] -> 1
    _fn(n - 2) // n的值为v1 n的值的反转,首次的值为 memo[0] -> 0
    memo[n] = result // v1 + v2 // 首次为 1 + 0 -> memo[2] = 1
    return memo[n]   */
console.log(fn1(10)) // 55

  

  欢迎访问博客站:http://www.devloper.top/article/detail/0efbec70-34b8-11eb-8b91-7b988df38548

-- 希望,只有和勤奋作伴,才能如虎添翼 --

Javascript之递归求裴波那契数的更多相关文章

  1. hdu1568&&hdu3117 求斐波那契数前四位和后四位

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1568 题意:如标题所示,求斐波那契数前四位,不足四位直接输出答案 斐波那契数列通式: 当n<=2 ...

  2. 求斐波那契数的python语言实现---递归和迭代

    迭代实现如下: def fab(n): n1 = 1 n2 = 1 if n<1: print("输入有误!") return -1 while (n-2)>0: n3 ...

  3. C++求斐波那契数

    题目内容:斐波那契数定义为:f(0)=0,f(1)=1,f(n)=f(n-1)+f(n-2)(n>1且n为整数) 如果写出菲氏数列,则应该是: 0 1 1 2 3 5 8 13 21 34 …… ...

  4. POJ 3070(求斐波那契数 矩阵快速幂)

    题意就是求第 n 个斐波那契数. 由于时间和内存限制,显然不能直接暴力解或者打表,想到用矩阵快速幂的做法. 代码如下: #include <cstdio> using namespace ...

  5. HDU 1568 Fibonacci【求斐波那契数的前4位/递推式】

    Fibonacci Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Proble ...

  6. 数学算法(一):快速求斐波那契数第n项通过黄金分割率公式

    有一个固定的数学公式= =,不知道的话显然没法应用 首先黄金分割率接近于这个公式, (以下为黄金分割率与斐波那契的关系,可跳过) 通过斐波那契数列公式 两边同时除以 得: (1) 注意后一项比前一项接 ...

  7. 2.裴波那契(Fibonacci)数列

    裴波那契(Fibonacci)数列 f(n)= ⎧⎩⎨0,1,f(n−1)+f(n−2),n =0n =1n>1 求裴波那契数列的第n项.(题目来自剑指offer) 1.递归解法,效率很低的解法 ...

  8. [矩阵乘法]裴波拉契数列II

    [ 矩 阵 乘 法 ] 裴 波 拉 契 数 列 I I [矩阵乘法]裴波拉契数列II [矩阵乘法]裴波拉契数列II Description 形如 1 1 2 3 5 8 13 21 34 55 89 ...

  9. [矩阵乘法]裴波拉契数列III

    [ 矩 阵 乘 法 ] 裴 波 拉 契 数 列 I I I [矩阵乘法]裴波拉契数列III [矩阵乘法]裴波拉契数列III Description 求数列f[n]=f[n-1]+f[n-2]+1的第N ...

随机推荐

  1. LeetCode1238循环码排列

    题目 给你两个整数 n 和 start.你的任务是返回任意 (0,1,2,,...,2n-1) 的排列 p,并且满足: p[0] = start p[i] 和 p[i+1] 的二进制表示形式只有一位不 ...

  2. 【LeetCode】306. Additive Number 解题报告(Python)

    [LeetCode]306. Additive Number 解题报告(Python) 标签(空格分隔): LeetCode 作者: 负雪明烛 id: fuxuemingzhu 个人博客: http: ...

  3. codeforce -602B Approximating a Constant Range(暴力)

    B. Approximating a Constant Range time limit per test 2 seconds memory limit per test 256 megabytes ...

  4. C#/.NET之WebAPI(从入门到放弃一)

    1.怎么理解WebApi,他究竟是什么? 关于这一篇,视频学习可参照B站up主:全栈ACE,全栈ACE的个人空间,社区QQ群如下,有什么问题也可加群咨询. 首先使用Visual Studio创建一个新 ...

  5. Jenkins安装、配置与说明

    Jenkins是一个开源的.提供友好操作界面的持续集成(CI)工具,主要用于持续.自动的构建/测试软件项目.监控外部任务的运行. 这么解释很抽象,举个例子,我们开发完一个功能,我们要将项目发布打包好, ...

  6. notepad++加到右键

    win10系统左下角点击"开始"->运行->regedit,打开注册表编辑器 在HKEY_CLAsssEs_RooT→ * → shell 下,在shell下,新建项命 ...

  7. Linux命令查看各端口号占用情况

    yum -y install net-tools netstat -ntpl

  8. Nginx日志通过Flume导入到HDFS中

    关注公众号:分享电脑学习回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新) flume上传到hdfs: 当我们的数据量比较大时,比如每天的日志文件达到5G以上 使用ha ...

  9. vue中动画的使用

    不要在router-view的外层使用动画!不要在router-view的外层使用动画!不要在router-view的外层使用动画! 重要的事情说三遍,在app.vue中自以为奇思妙想(实际是脑残)在 ...

  10. 在实验中观察指针——C++ 函数参数的压栈顺序

    前言 好久没写东西了,突发奇想,写写函数参数的压栈顺序 先看看这个问题 https://q.cnblogs.com/q/137133/ 然后看我简化的代码,猜输出结果是多少? #include< ...