背景:
斐波纳契数列(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;
}