日期:2014-05-20  浏览次数:20789 次

不懂得问题
题目:古典问题:有一对兔子,从出生后第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项的值。仅此而已。