1. 程式人生 > >古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子, 小兔子長到第三個月後每個月又生一對兔子 ,假如兔子都不死,問每個月的兔子總數為多少

古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子, 小兔子長到第三個月後每個月又生一對兔子 ,假如兔子都不死,問每個月的兔子總數為多少

思路分析:

  月份          兔子數                  說明

  1      1(對)            從開始有一對兔子

  2      1

  3      1+1       原本有一對  從第三個月開始 生了一對 一共是兩對兔子

  4      1+1+1      生了第二對

  5      1+1+1+1+1   生了第三對兔子   同時3月生的第一對兔子又生了一對

  6      5+3=8

  兔子數目序列: 1 1 2 3 5 8 .。。。。。。。。。

  總結出規律:前兩項之和就是第三項

  所以:第n個月的兔子數目為:f(n)=f(n-1)+f(n-2)

  public class Test{

  public static void main(String [] args){

  for(int i=1;i<=20;i++){

  System.out.println("第"+i+"個月的兔子數目為:"+f(i));}

public static int  f(int n){

if(x==1||x==2) return 1;

else

return f(n-1)+f(n-2);

}  

  }}

程式碼如下:

package P1;

//古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,

//小兔子長到第三個月後每個月又生一對兔子

//,假如兔子都不死,問每個月的兔子總數為多少?

public class Test {

public static void main(String [] args){

  for(int i=1;i<=20;i++){

  System.out.println("第"+i+"個月的兔子數目為:"+Test.frubb(i));

  }

  }

public static  int  frubb(int n){

if(n==1||n==2)

return 1;

else

return frubb(n-1)+frubb(n-2);

}  

  

  }