(2)斐波那契数列及其应用跳台阶问题
来源:互联网 发布:时时彩后二缩水软件 编辑:程序博客网 时间:2024/06/09 21:50
斐波那契公式:
递归实现:
输入参数n类型:unsigned int
函数体:
if : n == 0 -->返回 0
if : n == 1 -->返回1
if : n >= 2 --> 返回function(n - 1) + function(n - 2)
分析:随着n 的增大,重复计算同一个数的次数明显增多,例如求f(9)会用到f(6);求f(8) 和f(7) 同样会用到f(6);
故随着n的增大 ,递归所用资源急剧上升;
时间复杂度随着n 的增大呈现指数级增长;
循环实现:
当 (n >= 2)时,Fibonacci(2) = Fibonacci(0) + Fibonacci(1);
Fibonacci(3) = Fibonacci(1) + Fibonacci(2);
.....................................................................
Fibonacci(n) = Fibonacci(n-1) + Fibonacci(n-2);
故求f(n)时,只需要知道f(n-1),f(n-2)即可;
时间复杂度O(n);
代码实现:
#include<iostream>using namespace std;//----------------------------------------递归实现----------------------------------------------long long Fibonacci1(unsigned int n){if(n < 2)return n;elsereturn Fibonacci1(n - 1) + Fibonacci1(n - 2);}//--------------------------------------循环实现---------------------------------------------------long long Fibonacci2(unsigned int n){if(n < 2) return n;long long FeiOne = 0;long long FeiTwo = 1;long long FeiN = 0;for(unsigned i = 2; i <= n; ++i){FeiN = FeiOne + FeiTwo;FeiOne = FeiTwo;FeiTwo = FeiN;}return FeiN;}
int main(){unsigned int n;cout<<"请输入一个正整数:";cin>>n;cout<<n<<'\n';cout<<"斐波那契数列Fei1()为:"<<Fibonacci1(n)<<'\n';cout<<"斐波那契数列Fei2()为:"<<Fibonacci2(n)<<endl;return 0;}
跳台阶问题:
问题描述:一只青蛙一次可以跳上一级台阶,也可以跳上2级台阶;求该青蛙跳上一个n阶的台阶,总共有多少跳法?
分析:n =1-->直接跳上,跳法为1;
n = 2-->先跳台阶1,再跳台阶2;或者直接跳上台阶2;跳法总共有2种;
n > 2时;(1)若青蛙从台阶n-1,直接跳到台阶n;则跳法总数F(n) = F(n - 1)
(2)若青蛙从台阶n-2,直接跳到台阶n;则跳法总数F(n) = F(n - 2)
故:F(n) = F(n - 1) + F( n - 2);
发现其实是斐波那契数列的应用;
- (2)斐波那契数列及其应用跳台阶问题
- 斐波那契数列及其变形问题(跳台阶,变态跳台阶,矩形覆盖)
- 青蛙跳台阶(斐波那契数列应用)
- 青蛙跳台阶问题&&斐波那契数列问题
- 斐波那契数列及青蛙跳台阶问题
- 跳台阶——斐波那契数列问题
- 斐波那契数列及青蛙跳台阶问题
- 斐波那契数列及青蛙跳台阶问题
- 实现斐波那契数列(跳台阶问题)
- 跳台阶问题--斐波那契数列
- 斐波那契数列变形之跳台阶问题
- 跳台阶问题和斐波那契数列
- 跳台阶/斐波那契数列
- 2、斐波那契数列以及青蛙跳台阶
- 斐波那契数列及其应用
- 【剑指offer】跳台阶——斐波那契数列的实际应用
- 斐波那契数列的优化问题 青蛙跳台阶问题
- 斐波那契数列(青蛙跳台阶)
- HEVC/H.265 的未来必须是使用并行处理(OpenCL?) OpenGL和OpenCV区别
- oracle 数据库 查询某个用户下面说有的表和数据库
- HEVC/H.265 的未来必须是使用并行处理(OpenCL?) OpenCV和OpenCL区别
- 新浪面试
- C语言编程——餐馆点菜
- (2)斐波那契数列及其应用跳台阶问题
- 再谈异构计算CPU+GPU(APU)
- mysql常见操作总结
- 关于高性能计算的知识记录汇总-菜鸟级别
- UIView无限旋转动画的实现
- 网盘的兴起及其向云存储的转化
- CentOS6.4双网卡修改默认网关
- mysql联合惟一键设置
- java 线程同步