斐波那契数列及其应用
来源:互联网 发布:汽车产业网络平台 编辑:程序博客网 时间:2024/05/22 06:56
这个数列从第2项开始,每一项都等于前两项之和。
常规解法
long long Fibonacci(unsigned int n)
{
if(n<=0)
return 0;
if(n==1)
return 1;
return Fibonacci(n-1)+Fibonacci(n-2);
}
{
if(n<=0)
return 0;
if(n==1)
return 1;
return Fibonacci(n-1)+Fibonacci(n-2);
}
效率更高的解法
#include<iostream>
using namespace std;
int main()
{
int n;
int pre1=1;
int pre2=2;
int next;
cin>>n;
while(n--){
next=pre1+pre2;
pre1=pre2;
pre2=next;
}
cout<<next<<endl;
system("pause");
return 0;
}
using namespace std;
int main()
{
int n;
int pre1=1;
int pre2=2;
int next;
cin>>n;
while(n--){
next=pre1+pre2;
pre1=pre2;
pre2=next;
}
cout<<next<<endl;
system("pause");
return 0;
}
问题的变种:
问题描述:
一只青蛙一次可以跳上1级台阶,也可以跳上2级台阶,请问这只青蛙跳上n级的台阶总共有多少种跳法?
问题分析:
设青蛙跳上n级台阶的跳法为f(n)种.
设Fibonacci数列的第x项值为fibo(x).
(1)当n=1时,f(n)=1
(2)当n=2时,f(n)=2
(3)当n>2时,分析可知,在跳上第n级台阶前一步,必然是在第(n-1)或(n-2)级台阶,故有f(n) = f(n-1) + f(n-2); 依此类推...
本质上还是斐波那契数列下面看一个矩形覆盖问题
- 题目描述:
我们可以用2*1的小矩形横着或者竖着去覆盖更大的矩形。请问用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?
- 输入:
输入可能包含多个测试样例,对于每个测试案例,
输入包括一个整数n(1<=n<=70),其中n为偶数。
- 输出:
对应每个测试案例,
输出用n个2*1的小矩形无重叠地覆盖一个2*n的大矩形,总共有的方法数。
本质上还是斐波那契数列
0 0
- 斐波那契数列及其应用
- 关于斐波那契数列的性质及其应用
- 常见斐波那契数列的性质及其应用
- 斐波那契数列及其求和
- 斐波那契数列及其运用
- 斐波那契数列及其性质
- 斐波那契数列及其性质
- (2)斐波那契数列及其应用跳台阶问题
- 斐波那契数列递归及非递归实现及其应用
- 斐波那契数列的应用
- 算法应用-斐波那契数列
- 斐波那契数列及其变体走楼梯问题
- 斐波那契数列(Fibonacci)及其拓展
- 青蛙跳台阶(斐波那契数列应用)
- 斐波那契数列的小应用
- 【水题算法】斐波那契数列的应用
- HDU5620——斐波那契数列的应用
- 斐波那契数列的应用(算法实现)
- 对private域进行读写操作的方法
- iOS开发~设置label上文字显示不同大小、颜色、字体类型
- Exception in thread "main" java.lang.NoSuchFieldError: INSTANCE
- 基于jquery的固定表头和列头的方法
- iOS开发之深复制浅复制
- 斐波那契数列及其应用
- java源码分析(3)-String(2)
- 缺少 mcrypt 扩展。请检查 PHP 配置。
- android6.0系统缺少com.android.internal.policy.PolicyManager导致无法获取LayoutInflater实例问题
- 中断处理
- Android Studio之常用设置
- 现在大学毕业为何找份好工作就那么难
- 列表上拉刷新与下拉加载
- Ubuntu Linux下通过代理(proxy)使用git上github.com