java基礎---------遞歸和循環的使用效率


package java基礎;

/**
* 參數遞歸和迭代的效率,遞歸效率太低,如果用到遞歸一般使用循環
*/

public class TestRecursion {
public static void main(String[] args) {
     //標記遞歸方法開始執行事件
long d1=System.currentTimeMillis();
System.out.printf("%d階乘結果:%s%n",10,factorial(10));
      //遞歸程序結束時間
long d2=System.currentTimeMillis();
System.out.printf("遞歸耗時:%s%n",d2-d1);//計算出遞歸使用的時間
factorialLoop(10);
}

//計算階乘方法,遞歸就是方法自己調用自己
static long factorial(int a){

if(a==1){
return 1;
}
else {
return a*factorial(a-1);
}
}
//高性能一般使用循環,遞歸效率太低
static long factorialLoop(int b){
long d3=System.currentTimeMillis();
long result=1;
while (b>1){
result*=b*(b-1);
b=b-2;
}
long d4=System.currentTimeMillis();
System.out.println("循環階乘結果"+result);
System.out.printf("遞歸耗時:%s%n",d4-d3);
return result;

}
}

執行結果:

10階乘結果:3628800
遞歸耗時:25
循環階乘結果3628800
遞歸耗時:0

 
         
         
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM