斐波那契數列 Java

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");
		
		
	}


}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章