小白兔生小白兔-菲波拉契数列问题
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                小白兔生小白兔-菲波拉契数列问题
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.                        
                                有一對(duì)小白兔,從出生后第3個(gè)月起每個(gè)月都生一對(duì)小白兔,小白兔長(zhǎng)到第三個(gè)月后每個(gè)月又生一對(duì)小白兔,假如小白兔都不死,問每個(gè)月的小白兔總數(shù)為多少?
這道題是典型的斐波拉切數(shù)列問題,其特點(diǎn)就是從第三列開始就等于前兩列之和,算法: F(n)=F(n-1)+F(n-2)
列出三種實(shí)現(xiàn)方式:
/*** 遞歸算法 F(n)=F(n-1)+F(n-2)* @param n 月數(shù)* @return*/public static int rabbitCalculate(int n){return n <= 2 ? 1 : (rabbitCalculate(n-1) + rabbitCalculate(n-2));}?
/*** 根據(jù)公式循環(huán)計(jì)算 F(n)=F(n-1)+F(n-2)* @param n 月數(shù)*/public static void rabbitCalculate2(int n){int [] arr=new int[n+1];arr[0]=0;arr[1]=1;int now=0;System.out.println("第1個(gè)月兔子對(duì)數(shù):"+arr[1]);for (int i = 2; i <=n ; i++) {arr[i]=arr[i-1]+arr[i-2];now=arr[i];System.out.println("第"+i+"個(gè)月兔子對(duì)數(shù):"+now);}System.out.println("月兔子對(duì)數(shù):"+now);}?
/*** 借助臨時(shí)變量進(jìn)行計(jì)算* @param n 月數(shù)*/public static void rabbitCalculate3(int n){int previous=1,now=1,temp,begin=3;System.out.println("第1個(gè)月兔子對(duì)數(shù):"+previous);System.out.println("第2個(gè)月兔子對(duì)數(shù):"+previous);for (int i = begin; i <= n; i++) {temp=now; // 記錄前一個(gè)now備用now=previous+now; // 算出當(dāng)前now值previous=temp; // 將記錄的位置值賦給previousSystem.out.println("第"+i+"個(gè)月兔子對(duì)數(shù):"+now);}}結(jié)束
轉(zhuǎn)載于:https://www.cnblogs.com/wanghao1874/p/10715061.html
總結(jié)
以上是生活随笔為你收集整理的小白兔生小白兔-菲波拉契数列问题的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: FL Studio 12是什么软件?Ma
- 下一篇: 2020年工作总结大会感悟
