1.5兔子产子问题

发布时间 2023-04-16 16:15:52作者: 啵菠菜

1.问题描述
有一对兔子,从出生后的第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子,假设所有的兔子都不死,问30个月内每个月的兔子总数为多少?
2.问题分析
这是一个有趣的古典数学问题,我们画一张表来找一下兔子数的规律吧.
提示:不满1个月的兔子为小兔子,满1个月不满2个月的为中兔子,满3个月以上
第1章趣味算法入门
的为老兔子。
可以看出,每个月的兔子总数依次为1,1,2,3,5,8,13…这就是Fibonacci数列。总结数列规律即从前两个月的兔子数可以推出第3个月的兔子数。
3.算法设计
该题目是典型的迭代循环,即是一个不断用新值取代变量的旧值,然后由变量旧值递推出变量新值的过程。这种迭代与如下因素有关:初值、迭代公式、迭代次数。经过问题分析,算法可以描述为:
fib= fib,=1(n=1,2)
初值
fib,=fib,i+fibn-2(n≥3)迭代公式
用C语言来描述迭代公式即为fib=fib1+fib2,其中fib为当前新求出的兔子数,f1为前一个月的兔子数,fib2中存放的是前两个月的兔子数,然后为下一次迭代做准备,fib@rfib1@rfib2,进行如下的赋值 fib2=fib1,fb1=fib,要注意赋值的次序,迭代次数由循环变量控制,表示所求的月数。
4.完整程序

#include<iostream>
using namespace std;
int main()
{
int i,c,a=1,b=1;
cout<<a<<" "<<b<<" ";
for(i=1;i<=10;i++)
{
c=a+b;
cout<<c<<" ";
a=b;
b=c;
}
}