【超直白】算法:斐波那契数列
题目:
大家都知道斐波那契数列,现在要求输入一个整数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;
}}
【超直白】算法:斐波那契数列相关推荐
- Java数据结构与算法---斐波那契数列Fibonacci
Java数据结构与算法-斐波那契数列Fibonacci 原理都很简单,直接上代码: package cn.m_fibonacci;public class Fibonacci {public stat ...
- 最优化算法-斐波那契数列搜索
斐波那契数列搜索,参考Edwin<最优化导论>第四版7.3章节,算法采用go语言实现. /****************************************** FileNa ...
- 427-动态规划算法-斐波那契数列
动态规划算法求解斐波那契数列 状态:dp数组,存储已经求解的子问题的最优解 递归版本的动态规划算法 //参数n表示斐波那契数列中数字的个数. //返回相应个数的斐波那契数列数字的值. int fabn ...
- 趣学算法--斐波那契数列
14天阅读挑战赛 努力是为了不平庸~ 目录 1.神奇的兔子数列 1.1问题分析 1.2斐波那契数列 1.3算法设计 1.3.1递归代码 1.3.2递归的改进,O(n)的代码 1.3.3时间复杂度为O( ...
- 经典算法——斐波那契数列
斐波那契数列的经典解法是采用递归的方式: f(n)=f(n-1)+f(n-2) n>2 f(1)=1 n=1 f(2)=1 n=2 按照这个思路可以写出递归算法: #in ...
- 算法-斐波那契数列:兔子序列
利用递归函数求斐波那契数列(兔子序列) 1.1.2.3.5.8.13.21-求第n个数是几,n任意一个数大家可以自定义,比如10,20等 分析: 从给出的数列中,可知, n=1时→1 n=2时→1 n ...
- C语言中经典算法——斐波那契数列的几种算法
斐波那契数列的递推公式: 我们尝试计算斐波那契数列的第n项并输出. 1.递归法 #include<stdio.h> int fib(int m) {if(m>=3){return f ...
- 算法—斐波拉契数列(跳楼梯问题)
问题描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法. 这道题一看,就会轻易的知道用递归,f(1)=1;f(2)=1;f(n)=f(n-1)+f(n-2 ...
- 算法-斐波那契数列(黄金分割数列|兔子数列)
前言 斐波那契数列(Fibonacci sequence),又称黄金分割数列,因数学家莱昂纳多·斐波那契(Leonardoda Fibonacci)以兔子繁殖为例子而引入,故又称为"兔子数列 ...
- 算法 - 斐波那契数列问题(转自微信公众号码农翻身)
注:转自微信公众号漫画:什么是动态规划? 问题描述: 算法:有一座高度是10级台阶的楼梯,从下往上走,每跨一步只能向上1级或者2级台阶.要求用程序来求出一共有多少种走法. 解析:如果只差最后一步就能走 ...
最新文章
- 使用openssl给web站点颁发证书
- [二叉树]二叉搜索树转换为双向链表(剑指Offer26)
- 永远年轻,永远热泪盈眶----致所有奋斗的ACMer
- 十二星座职业成功忠告
- Chrome 扩展 最近的历史 HistoryBar v1.1
- LD_PRELOAD用法总结
- mongodb 下载
- OC 5217欧创芯原装芯片一款连续电感电流导通模 式的降压型 LED 恒流驱动器,SOT23-5 封装
- 华为云虚拟主机的防火墙设置
- 【Unity使用UGUI实现王者荣耀UI界面(四)】游戏开始界面
- 基于时域表示的序列数据分类方法(一)——基于距离度量的序列数据分类方法
- Harmonious Attention Network for Person Re-Identification
- Facebook第三方登录对接
- odoo开发笔记 -- 官方模块一览表
- latex公式自动换行与不自动换行的实现
- 如何将网络上的共享文件映射到本地
- 文本图像数据集合、打标工具
- WV.21-大数阶乘算法1-序
- python标志图片_python图片加水印 - 小众知识
- LaTeX - 排版试卷 (选择题)