题目:

大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。
n<=39

分析:

何为斐波那契额数列呢??
例如:0 1 1 2 3 5 8 13 说的通透些就是前两个数的和是后面那个数。
通项公式:F(n) = F(n-1)+F(n-2)

大家结合这张图和通式理一下思路,相信其实不难。就是一个简单的递归调用,最后调用到F(0)和F(1)截止。
代码如下所示:

function test(n){if(n==0){return 0;
}else if(n==1){return 1;
}else if(n>1){var number  = test(n-1)+test(n-2);
return number  ;
}else{return null;
}}

这道题还没有完。因为由此可以看到这个算法的复杂度是2的N次方。(因为看图他每层都是以2的次幂进行增长的)所有他的时间复杂度极高。这个算法如果数极大的话是不合理的。
那么如何简化算法呢?
提示:倒推运算,利用已得的结论去运算下一次的方法。

其实也很简单,就是利用比如前两个数相加的和等于第三个数,第四个数等于 第三个数据(也就是前两个数的和)加上前两个数中最大的那一个。按照此规律,即可优化本题算法。

function testnew(n){var a = 1;
var b = 0;
var num = null;
if(n>1){for(let i=0;i<n-1;i++){num = a+b;
b=a;
a= num;}
return num;
}}

【超直白】算法:斐波那契数列相关推荐

  1. Java数据结构与算法---斐波那契数列Fibonacci

    Java数据结构与算法-斐波那契数列Fibonacci 原理都很简单,直接上代码: package cn.m_fibonacci;public class Fibonacci {public stat ...

  2. 最优化算法-斐波那契数列搜索

    斐波那契数列搜索,参考Edwin<最优化导论>第四版7.3章节,算法采用go语言实现. /****************************************** FileNa ...

  3. 427-动态规划算法-斐波那契数列

    动态规划算法求解斐波那契数列 状态:dp数组,存储已经求解的子问题的最优解 递归版本的动态规划算法 //参数n表示斐波那契数列中数字的个数. //返回相应个数的斐波那契数列数字的值. int fabn ...

  4. 趣学算法--斐波那契数列

    14天阅读挑战赛 努力是为了不平庸~ 目录 1.神奇的兔子数列 1.1问题分析 1.2斐波那契数列 1.3算法设计 1.3.1递归代码 1.3.2递归的改进,O(n)的代码 1.3.3时间复杂度为O( ...

  5. 经典算法——斐波那契数列

    斐波那契数列的经典解法是采用递归的方式: f(n)=f(n-1)+f(n-2)   n>2 f(1)=1      n=1 f(2)=1      n=2 按照这个思路可以写出递归算法: #in ...

  6. 算法-斐波那契数列:兔子序列

    利用递归函数求斐波那契数列(兔子序列) 1.1.2.3.5.8.13.21-求第n个数是几,n任意一个数大家可以自定义,比如10,20等 分析: 从给出的数列中,可知, n=1时→1 n=2时→1 n ...

  7. C语言中经典算法——斐波那契数列的几种算法

    斐波那契数列的递推公式: 我们尝试计算斐波那契数列的第n项并输出. 1.递归法 #include<stdio.h> int fib(int m) {if(m>=3){return f ...

  8. 算法—斐波拉契数列(跳楼梯问题)

    问题描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 这道题一看,就会轻易的知道用递归,f(1)=1;f(2)=1;f(n)=f(n-1)+f(n-2 ...

  9. 算法-斐波那契数列(黄金分割数列|兔子数列)

    前言 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列 ...

  10. 算法 - 斐波那契数列问题(转自微信公众号码农翻身)

    注:转自微信公众号漫画:什么是动态规划? 问题描述: 算法:有一座高度是10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶.要求用程序来求出一共有多少种走法. 解析:如果只差最后一步就能走 ...

最新文章

  1. 使用openssl给web站点颁发证书
  2. [二叉树]二叉搜索树转换为双向链表(剑指Offer26)
  3. 永远年轻,永远热泪盈眶----致所有奋斗的ACMer
  4. 十二星座职业成功忠告
  5. Chrome 扩展 最近的历史 HistoryBar v1.1
  6. LD_PRELOAD用法总结
  7. mongodb 下载
  8. OC 5217欧创芯原装芯片一款连续电感电流导通模 式的降压型 LED 恒流驱动器,SOT23-5 封装
  9. 华为云虚拟主机的防火墙设置
  10. 【Unity使用UGUI实现王者荣耀UI界面(四)】游戏开始界面
  11. 基于时域表示的序列数据分类方法(一)——基于距离度量的序列数据分类方法
  12. Harmonious Attention Network for Person Re-Identification
  13. Facebook第三方登录对接
  14. odoo开发笔记 -- 官方模块一览表
  15. latex公式自动换行与不自动换行的实现
  16. 如何将网络上的共享文件映射到本地
  17. 文本图像数据集合、打标工具
  18. WV.21-大数阶乘算法1-序
  19. python标志图片_python图片加水印 - 小众知识
  20. LaTeX - 排版试卷 (选择题)

热门文章

  1. This is Huge! PhysBAM code is going to be released?
  2. 有100个GMAIL的邀请,需要的来信就可以啦。
  3. php内存泄漏的后果,记一次php内存泄漏的排查经过
  4. Hbuilder开发HTML5 APP之图标和启动页制作
  5. 数据结构复习之【线性表】
  6. 堪比整容!学会这些可视化技巧,让你的图表分分钟高级起来
  7. 中国主流的大数据分析厂商
  8. 如何建立数据平台?看上市公司的选择!
  9. 如何将FLex AIR运行环境与AIR程序一起打包
  10. python学习——正则表达项目