1. 程式人生 > >將遞迴函式改為尾遞迴,或者是遞推函式,求第45,46,47,48個Fibonacci數所花費的時間,觀察效率是否得到提高。

將遞迴函式改為尾遞迴,或者是遞推函式,求第45,46,47,48個Fibonacci數所花費的時間,觀察效率是否得到提高。

遞推:

package 實驗二;
public class Fi數列遞推 {
	public static void main(String args[]){
		遞推 f=new 遞推();
		for(int i=45;i<=48;i++){
			long start=System.currentTimeMillis();
			System.out.println(f.F(i));
			long end=System.currentTimeMillis();
			long time=end-start;
			System.out.println("第"+i+"個Fibonacci數列的執行時間為:"+time);
		}
	}
}
class 遞推{
	long F(int n){
		if(n<=1)
			return 1;
		else{
			long a0=1;
			long a1=1;
			long a2=0;
			for(int i=2;i<n;i++) {
				a2=a0+a1;
				a0=a1;
				a1=a2;
			}
			return a2;
		}
	}
}