遞歸

深刻理解遞歸算法javascript

人理解迭代,神理解遞歸java

遞歸與循環的區別算法

遞歸:你打開面前這扇門,看到屋裏面還有一扇門(這門可能跟前面打開的門同樣大小(靜),也可能門小了些(動)),你走過去,發現手中的鑰匙還能夠打開它,你推開門,發現裏面還有一扇門,你繼續打開,。。。, 若干次以後,你打開面前一扇門,發現只有一間屋子,沒有門了。 你開始原路返回,每走回一間屋子,你數一次,走到入口的時候,你能夠回答出你到底用這鑰匙開了幾扇門。code

循環:你打開面前這扇門,看到屋裏面還有一扇門,(這門可能跟前面打開的門同樣大小(靜),也可能門小了些(動)),你走過去,發現手中的鑰匙還能夠打開它,你推開門,發現裏面還有一扇門,(前面門若是同樣,這門也是同樣,第二扇門若是相比第一扇門變小了,這扇門也比第二扇門變小了(動靜如一,要麼沒有變化,要麼一樣的變化)),你繼續打開這扇門,。。。,一直這樣走下去。 入口處的人始終等不到你回去告訴他答案。遞歸

 

模型一: 在遞去的過程當中解決問題ip

function recursion(大規模){
    if (end_condition){      // 明確的遞歸終止條件
        end;   // 簡單情景
    }else{            // 在將問題轉換爲子問題的每一步,解決該步中剩餘部分的問題
        solve;                // 遞去
        recursion(小規模);     // 遞到最深處後,不斷地歸來
    }
}

 

模型二: 在歸來的過程當中解決問題it

function recursion(大規模){
    if (end_condition){      // 明確的遞歸終止條件
        end;   // 簡單情景
    }else{            // 先將問題所有描述展開,再由盡頭「返回」依次解決每步中剩餘部分的問題
        recursion(小規模);     // 遞去
        solve;                // 歸來
    }
}
/**
 * 關於 遞歸中 遞進和迴歸的理解
 * @param n
 */
public static void recursion_display(int n) {
    int temp=n;//保證先後打印的值同樣
     System.out.println("遞進:" + temp);
    if (n > 0) {
        recursion_display(--n);
    }
    System.out.println("迴歸:" + temp);
}
相關文章
相關標籤/搜索