斐波那契數列用遞迴還是迴圈好
阿新 • • 發佈:2018-11-17
/** * */ /** * @author jueying: * @version 建立時間:2018-11-15 下午10:21:26 * 類說明 */ /** * @author jueying * */ public class Test12 { public static long startTime=0; public static long endTime=0; //迴圈 public int Recursive(int n){ int b=0;//第一項 f(0) int a=1;//第二項 f(1) int s=0; if(n==1){ return a; }else if(n==0){ return b; }else{ for(int i=2;i<=n;i++){ s=a+b; //f(2) b=a; a=s; } return s; } } //遞迴 public int Recycle(int n){ if(n==1){ return 1; }else if(n==0){ return 0; }else{ return Recycle(n-1)+Recycle(n-2); } } /** * @param args * * 斐波那契數列用遞迴還是迴圈好 * * f(n) 定義 如果n=0 f(n)=1 如果n=1 f(n)=1 如果 n>1 f(n)=f(n-1)+f(n-2) * */ public static void main(String[] args) { // TODO Auto-generated method stub Test12 t=new Test12(); startTime=System.currentTimeMillis(); System.out.println(t.Recursive(46));//1836311903 //System.out.println(t.Recycle(46));//1836311903 endTime=System.currentTimeMillis(); System.out.println("耗費時間:"+(endTime-startTime));//13527 1 } }
遞迴層次越深,重複計算過程越多,所以迴圈效率在這種情況下降較好