1. 程式人生 > >java程式設計題之斐波那契數列

java程式設計題之斐波那契數列

  • 下邊的分析是通過Excel表格做出來的,因為不知道它具體生產的情況,所以就一個月一個月的試,最後得到下列的情況
/**
      * 古典問題:有一對兔子,從出生後第3個月起每個月都生一對兔子,
      * 小兔子長到第三個月後每個月又生一對兔子,假如兔子都不死,
      * 問每個月的兔子總對數為多少?
      * 第一月 :(1)1
      * 第二月 :(1)1
      * 第三月 :(2)1+1
      * 第四月 :(3)1+1+1
      * 第五月 :(5)1+1+1+1+1
      * 第六月 :(8)1+1+1+1+1+1+1+1
      * 第七月 :(13)1+1+1+1+1+1+1+1+1+1+1+1+1
      * 第八月 :(21)1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
      * 第九月 :(34)1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
      * 第十月 :(55)1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
      *第十一月:(89)1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
      *第十二月:(144)1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1+1
      *
      *根據上邊的分析,很明顯,
      *當前月的兔子總對數=前兩個月兔子對數和
      *
      *第三月:1+1=2
      *第四月:1+2=3
      *第五月:2+3=5
      *第六月:3+5=8
      *第七月:5+8=13
      *第八月:8+13=21
      *第九月:13+21=34
      *第十月:21+34=55
      *
      */
public static void rabbit(){ int month = 0; Scanner in = null; try{ month = getMonth(in,month,"請輸入你飼養兔子的月份:"); if(month<1){ month = getMonth(in,month,"月份不能小於1個月,請重新輸入飼養兔子的月份:"); } }catch(Exception e){ month = getMonth(in,month,"你輸入的月份不合法,請重新輸入飼養兔子的月份:"
); } long [] rb= new long[month]; for(int i=0;i<month;i++){ if(i<2){ /** * 給第一月,第二月賦預設值為1,因為前兩個月沒有兔子出生 */ rb[i]=1; }else{ /** * 從第三月開始,每月的兔子總對數=前兩個月兔子對數的和 */
rb[i]=rb[i-2]+rb[i-1]; } printObj("第"+(i+1)+"月的兔子總對數:"+rb[i]); } }