遞歸算法


遞歸,顧名思義,自己調用自己的算法。

編寫遞歸函數時,必須告訴它何時停止遞歸。正因為如此,每個遞歸函數都有兩個部分:基線條件(base case)和遞歸條件(recurssive case)。遞歸條件指的是函數調用自己的條件,而基線條件指的是函數不再調用自己,避免無限死循環的條件。

因此使用遞歸的算法一般都能使用循環代替。

(循環)非遞歸效率高;遞歸代碼寫出來思路清晰,可讀性強。

遞歸好處:代碼更簡潔清晰,可讀性更好 

遞歸壞處:由於遞歸需要系統堆棧,所以空間消耗要比非遞歸代碼要大很多。棧使用先進后出的原則。而且,如果遞歸深度太大,可能系統撐不住。

遞歸有使用的局限性,並不是每一種語言都支持遞歸。 

下面是一個階乘的遞歸函數,大家可以用自己的電腦試試100,1000,10000需要的系統性能。

 

/**
 * 遞歸計算n 的階乘
 * @param n
 * @return
 */
public long test(long n){
    if(n == 1){
        return 1;
    }else{
        return n * test(n-1);
    }
}

 


免責聲明!

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



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