天天看點

遞歸算法介紹及Java應用實戰

image

什麼是遞歸算法

遞歸算法是把問題轉化為規模縮小了的同類問題的子問題,然後遞歸調用函數(或過程)來表示問題的解。一個過程(或函數)直接或間接調用自己本身,這種過程(或函數)叫遞歸過程(或函數)。

遞歸過程一般通過函數或子過程來實作。遞歸方法:在函數或子過程的内部,直接或者間接地調用自己的算法。遞歸其實就是在棧記憶體中不斷的加載同一個函數

什麼時候用遞歸呢?

當一個功能被重複使用,而每一次使用該功能時的參數不确定,都由上次的功能元素結果來确定。

遞歸的注意事項

  1. 必須有可最終達到的終止條件,否則程式将陷入無窮循環出現棧記憶體溢出錯誤(StackOverflowError);
  2. 子問題在規模上比原問題小,或更接近終止條件;
  3. 子問題可通過再次遞歸調用求解或因滿足終止條件而直接求解;
  4. 子問題的解應能組合為整個問題的解。

遞歸實戰

下面用遞歸來實作從1+2+3+...N的小例子。

public static void main(String[] args) {
    System.out.println(sum(10));
}

private static int sum(int n) {
    if (n == 1) {
        return n;
    } else {
        return n + sum(n - 1);
    }
}
           

上面的例子采用遞歸算法從1加到10,看着是倒着來的從10加到1,每次減1進行相加真到最後為1終止。

推薦閱讀

幹貨:

Spring Boot & Cloud 最強技術教程

工具:

推薦一款線上創作流程圖、思維導圖軟體
分享Java幹貨,高并發程式設計,熱門技術教程,微服務及分布式技術,架構設計,區塊鍊技術,人工智能,大資料,Java面試題,以及前沿熱門資訊等。