李敏  
          日歷
          <2025年6月>
          25262728293031
          1234567
          891011121314
          15161718192021
          22232425262728
          293012345
          統計
          • 隨筆 - 1
          • 文章 - 40
          • 評論 - 4
          • 引用 - 0

          導航

          常用鏈接

          留言簿(1)

          文章分類

          文章檔案

          相冊

          收藏夾

          它山之石

          聚賢莊

          搜索

          •  

          最新評論

           

          背景:
            斐波納契數列(Fibonacci Sequence),又稱黃金分割數列,指的是這樣一個數列:1、1、2、3、5、8、13、21、……在數學上,斐波納契數列以如下被以遞歸的方法定義:F0=0,F1=1,Fn=F(n-1)+F(n-2)(n>=2,n∈N*)

          兩種方法實現
          1)遞歸
          2)遍歷

          示例:

              for(int num=0;num<10;num++){
                System.out.println(num+"   "+fobin(num));
              }


          遞歸
            //演算為目的,所以選用int

          private int fobin(int n) {
              if(n==0)
                return 0;
              if(n==1)
                return 1;
               
              return fobin(n-1)+fobin(n-2);
            }



          遍歷
          private int lastFobinListValue(List<Integer> list) {
              final int LEN=list.size();
              final int lastNum=LEN-1;
             
              final int THE_N=list.get(lastNum);
             
              return THE_N;
            }
            
            private List<Integer> fobinList(List<Integer> list,int n) {
              for(int i=2;i<n;i++){
               
                int last=list.get(i-2);
                int next=list.get(i-1);
               
                int num=last+next;
               
                list.add(new Integer(num));
              }
           
              return list;
            }
            
            private List<Integer> initFobinList() {
              final int N1=1;
              final int N2=1;
             
              List<Integer> list=new ArrayList<Integer>();
              list.add(new Integer(N1));
              list.add(new Integer(N2));
           
              return list;
            }
            
            private int fobin(int n) {
              if(n==0)
                return 0;
               
              if(n==1)
                return 1;
             
            /**
              int first=0;
              int next=1;
             
              int count=0;
             
              for(int i=1;i<n;i++){
                count=first+next;//(n-2)+(n-1)
               
                first=next;   //0->1
               
                next=count;  //1->1
              }
             
              return count;
              */

              List<Integer> baseList=initFobinList();
             
              List<Integer> fullFobinList=fobinList(baseList,n);
             
              final int THE_N=lastFobinListValue(fullFobinList);
             
              return THE_N;
            }
          posted on 2011-11-17 20:29 李敏 閱讀(261) 評論(0)  編輯  收藏 所屬分類: 算法
           
          Copyright © 李敏 Powered by: 博客園 模板提供:滬江博客
          主站蜘蛛池模板: 竹北市| 海兴县| 元朗区| 外汇| 衢州市| 宝坻区| 罗城| 沂南县| 关岭| 宕昌县| 通辽市| 金堂县| 久治县| 曲麻莱县| 嘉善县| 安仁县| 和硕县| 巍山| 长子县| 靖州| 元江| 涪陵区| 肇庆市| 旌德县| 长子县| 萨迦县| 长沙市| 如皋市| 乡宁县| 百色市| 满洲里市| 新乡市| 兰坪| 洪泽县| 晴隆县| 保德县| 临江市| 溧阳市| 临桂县| 吴忠市| 平安县|