Java 遞歸算法


1.遞歸算法基本思路:

  Java遞歸算法是基於Java語言實現的遞歸算法。遞歸算法是一種直接或者間接調用自身函數或者方法的算法。遞歸算法實質是把問題分解成規模縮小的同類問題的子問題,然后遞歸調用方法表示問題的解。遞歸往往能給我們帶來非常簡潔非常直觀的代碼形式,從而使我們的編碼大大簡化,然而遞歸的思維確實跟我們的常規思維相逆的,通常都是從上而下的思維問題,而遞歸趨勢從下往上的進行思維。

2.遞歸算法解決問題的特點:

  • 遞歸就是方法里調用自身
  • 在使用遞歸策略時,必須有一個明確的遞歸結束條件,稱為遞歸出口
  • 遞歸算法代碼顯得很簡潔,但遞歸算法解題的運行效率較低。所以不提倡用遞歸設計程序。
  • 在遞歸調用的過程中系統為每一層的返回點、局部量等開辟了棧來存儲。遞歸次數過多容易造成棧溢出等,所以一般不提倡用遞歸算法設計程序。

  在做遞歸算法的時候,一定把握出口,也就是做遞歸算法必須要有一個明確的遞歸結束條件。這一點是非常重要的。其實這個出口就是一個條件,當滿足了這個條件的時候我們就不再遞歸了。

3.代碼示例:

1
2
3
4
5
6
7
8
public  class  Factorial {
     //this is a recursive function
     int  fact( int  n){
         if  (n== 1 return  1 ;
         return  fact(n- 1 )*n;
     }
     
}

 

1
2
3
4
5
6
7
8
9
public  class  TestFactorial {
 
     public  static  void  main(String[] args) {
         // TODO Auto-generated method stub
         Factorial factorial= new  Factorial();
         System.out.println( "factorial(5)=" +factorial.fact( 5 ));
     }
 
}

 代碼執行流程圖如下:

此程序中n=5就是程序的出口。


免責聲明!

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



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