这是一道典型的递推算法设计问题:
一,问题分析:寻找问题的规律性,本题可采用枚举法。
月 份:1月 2月 3月 4月 5月 6月 ......
兔子对数:1 1 1+1=2 2+1=3 3+2=5 5+3=8 ......
二,数学建模:若设x表示兔子数,则X(1)=X(2)=1,X(n)=x(n-1)+X(n-2),其中n=3,4,5,6......很快就会发现这其实是著名的裴波那契数列。
三,算法设计:(可以用不同方法,这里给出一个供参考)
1,选用数据结构:因为要保存每个月兔子的对数,所以选用数组数据结构。
2,程序如下:(java)
/*
因数组长度必须是常量,所以本程序只能求前100个月内的每个月的兔子总数,可根据需要自行调整数组长度
*/
public class NumOfRubbits{
public static void main(String[] args)
{
int [] num=new int [100];
num[1]=num[2]=1;
//计算
for(n=3;n<100;n++)
{
num[n]=num[n-1]+num[n-2];
}
//输出
for(i=1;i<100;i++)
{
System.out.println("第"+i+"个月兔子总数共有"+num[i]+"对!");
}
}
} |