Java 遞歸算法

1.遞歸算法基本思路:java

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

2.遞歸算法解決問題的特色:函數

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

  在作遞歸算法的時候,必定把握出口,也就是作遞歸算法必需要有一個明確的遞歸結束條件。這一點是很是重要的。其實這個出口就是一個條件,當知足了這個條件的時候咱們就再也不遞歸了。this

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

 代碼執行流程圖以下:spa

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

相關文章
相關標籤/搜索