斐波那契数列详细描述:见
斐波那契数列
问题描述:
兔子生子问题是一个经典的数学问题,用于演示斐波那契数列的应用。问题描述如下:
假设有一对小兔子,从第三个月开始,每个月可以生一对小兔子。
新生的小兔子也要从第三个月开始,每个月可以生一对小兔子。
假设所有兔子都不死去,问经过n个月后,共有多少对兔子?
思路:
理一下思路:
因为从第3个月开始才每个月生1对兔子
所以
第1个月结束的时候只有1对兔子(未满3个月,不能生殖)
第2个月结束的时候只有1对兔子(未满3个月,不能生殖)
第3个月结束的时候就有2对兔子(原来的一对小兔子可以生出一对小兔子,所以共有两对小兔子)
第4个月结束的时候就有3对兔子(原来的一对小兔子和新生的一对小兔子都可以生出一对小兔子,所以共有三对小兔子)
第5个月结束的时候就有5对兔子(原来的二对小兔子和新生的一对小兔子都可以生出一对小兔子,所以共有五对小兔子)
第6个月结束的时候就有8对兔子(原来的三对小兔子和新生的一对小兔子都可以生出一对小兔子,所以共有八对小兔子)
以此类推
这不就符合斐波那契数列的性质吗?
从第3项开始,每项是前两项之和
函数实现
int rabbitBorn(int n){ //n:第n个月 int f0 = 1;//第一个月有1对兔子 int f1 = 1;//第二个月还是一对兔子 if(n < 3){return f0; }for(int i = 3;i <= n;i++){int sum = f0 + f1;f0 = f1;f1 = sum;}return f1;
}
代码实现
#include<iostream>
using namespace std;
int rabbitBorn(int n){ //n:第n个月 int f0 = 1;//第一个月有1对兔子 int f1 = 1;//第二个月还是一对兔子 if(n < 3){return f0; }for(int i = 3;i <= n;i++){int sum = f0 + f1;f0 = f1;f1 = sum;}return f1;
}int main(){int n;cout << "请输入要知道的月份的兔子对数:";cin >> n;cout << n << "月份的兔子对数为:";cout << rabbitBorn(n) << "对" << endl;system("pause");
return 0;
}
本文发布于:2024-02-04 16:15:07,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170711418857119.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |