import java.util.Stack;
public class Inteview10_1 {
/**
* 題目:求斐波那契數列的第n項
* f(0)=0;
* f(1)=1;
* f(n)=f(n-1)+f(n-2);
* f(n)=0+1+1+2+3+5+8+13+.......
* @param args
*/
//傳統的遞歸算法,效率很低
public int Fibonacci0(int n){
int res=0;
if(n==0)
return 0;
if(n==1)
return 1;
return Fibonacci0(n-1)+Fibonacci0(n-2);
}
//用循環的方式
public int Fibonacci1(int n){
if(n==0)return 0;
if(n==1)return 1;
int pre_2=0;
int pre_1=1;
int res=0;
for(int i=2;i<=n;i++){
res=pre_2+pre_1;
pre_2=pre_1;
pre_1=res;
}
return res;
}
public static void main(String args[]){
Inteview10_1 in=new Inteview10_1();
long startTime=System.currentTimeMillis(); //獲取開始時間
System.out.println(in.Fibonacci0(20));
long endTime=System.currentTimeMillis(); //獲取結束時間
System.out.println("程序運行時間: "+(endTime-startTime)+"ms");
long startTime1=System.currentTimeMillis(); //獲取開始時間
System.out.println(in.Fibonacci1(20));
long endTime1=System.currentTimeMillis(); //獲取結束時間
System.out.println("程序運行時間: "+(endTime1-startTime1)+"ms");
}
}
斐波那契數列 Java
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.