李敏  
日历
<2024年5月>
2829301234
567891011
12131415161718
19202122232425
2627282930311
2345678
统计
  • 随笔 - 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 李敏 阅读(247) 评论(0)  编辑  收藏 所属分类: 算法

只有注册用户登录后才能发表评论。


网站导航:
 
 
Copyright © 李敏 Powered by: 博客园 模板提供:沪江博客