斐波那契数列在实际中的应用 designed by kjqkdy

形如1 1 2 3 5 8…的数列我们把它称之为斐波那契数列,他的基本规律是本项等于前两项的和。
斐波那契数列的基本代码思路为:

#include<iostream>
using namespace std;
int main()
{
	int f1=1,f2=1,f3;    //定义三个变量 
	int n;               //输入想要求的斐波那契数列第n项 
	cin>>n;
	for(int i=3;i<=n;i++)
	{
		f3=f1+f2;        //本项等于前两项之和 
		f1=f2;            
		f2=f3;           //通过赋值运算求出下一项的前两项 
	}
	cout<<f3<<endl;
	return 0;
}  

斐波那契数列在解决实际问题中也有广泛的应用
例如:
上楼梯问题:楼梯有n个台阶,上楼可以一步上一阶或者一步上两阶,问一共有多少种上楼方法?
让我们假设n=5时一共有八种方法

5=1+1+1+1+1
5=2+1+1+1
5=1+2+1+1
5=1+1+2+1
5=1+1+1+2
5=2+2+1
5=2+1+2
5=1+2+2

可以看出加粗的部分是第一次走了一个台阶
而未加粗的部分是一次走了两个台阶
我们就可以把n个台阶的走法分为两类
我们设n个台阶走法总数为f(n)

  1. 第一类:第一步走一个台阶,剩下n-1阶要走f(n-1)。
  2. 第二类:第一步走两个台阶,剩下n-2阶要走f(n-2)。
    所以我们就得到了递推式f(n)=f(n-1)+f(n-2)
    即为本项为前两项的和,符合斐波那契数列模型。
    考虑边界情况:
    f(1)=1:当只剩下一个台阶时只能跨一步即只有一种方法。
    f(2)=2:当只剩下两个台阶时可以跨两步也可以跨两次一步。
    找出规律得到一下数列:
    1 2 3 5 8 13…
#include<iostream>
using namespace std;
int fib(int n)                       //创建递归函数 
{
	if(n==1) return 1;              
	if(n==2) return 2;               //找到递归边界值 
	return(fib(n-1)+fib(n-2));       //递归式 
} 
int main()
{
	int x;
	cin>>x;
	cout<<fib(x)<<endl;
	return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值