遞歸算法

遞歸

遞歸算法即在程序中不斷反覆調用自身來達到求解問題的方法。此處的重點是調用自身,這就要求待求解的問題能夠分解爲相同問題的一個子問題。這樣,通過多次遞歸調用,便可求解完成。

遞歸調用是一個方法在其方法體內調用自身的方法調用方式。這種方法也稱爲“遞歸方法”。

編寫遞歸方法時,必須使用if語句強制方法在未執行遞歸調用前返回。如果不這樣做,在調用方法後,它將永遠不會返回。

好處:有的算法用遞歸表示要比循環表示簡潔精煉,而且某些問題,特別是與人工智能有關的問題,更適宜用遞歸方法。有的算法,用遞歸能實現,用循環不一定能實現。

缺點:大部分遞歸例程沒有明顯地減少代碼規模和節省內存空間, 遞歸形式比非遞歸形式運行速度要慢一些。這是因爲附加的方法調用增加了時間開銷,例如需要執行一系列的壓棧出棧等操作。但在許多情況下,速度的差別不太明顯。如果遞歸層次太深,還可能導致堆棧溢出。

實例

遞歸算法求階乘

public class P3_3 {

    static long fact(int n){
        if(n<=1){
            return 1;
        }else {
            return n*fact(n-1);
        }
    }

    public static void main(String[] args) {
        System.out.println("輸入一個正整數!");
        Scanner input = new Scanner(System.in);
        int n = input.nextInt();
        long st = fact(n);
        System.out.println("結果爲:"+st);
    }

}


輸入一個正整數!
12
結果爲:479001600
發佈了42 篇原創文章 · 獲贊 2 · 訪問量 6451
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章