不懂得问题
题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?
//这是一个菲波拉契数列问题
public class lianxi01
{
public static void main(String[] args)
{
System.out.println("第1个月的兔子对数: 1");
System.out.println("第2个月的兔子对数: 1");
int f1 = 1, f2 = 1, f, M=24;
for(int i=3; i<=M; i++)
{
f = f2;
f2 = f1 + f2;
f1 = f;
System.out.println("第" + i +"个月的兔子对数: "+f2);
}
}
}
谁能帮小弟 详细的分析一下这个问题???
------解决方案--------------------出生后第3个月起每个月都生一对兔子,所以第三个月就有2对兔子,第四个月就有3对兔子(第一对兔子生的),第五个月就有5对兔子(第一第二对都生了),以此类推得到菲波拉契数列为:1,1,2,3,5,8,13···
规律为从第三个月开始,该月的兔子对数等于前两个月的兔子对数相加,即1+1=2,1+2=3,2+3=5···
理解这个的话程序就很好理解了吧··
------解决方案--------------------没啥好分析的,分析数列前n项规律并用数学方法证明:
斐波拉契数列求An项公式为:f(i)=f(i-1)+f(i-2),i>2.
上述的代码是用非递归方法求该数列第n项的值。仅此而已。