js再帰

2656 ワード

js再帰
再帰的には、大きな問題をn個の似たような小さな問題に分解し、自分を呼び出してこれらの小さな問題を解決し、結果を求めることです.
実践:
  • ハノイタワー
  • 塔の設備には三本の柱と直径がそれぞれ異なる中空ディスクがあります.最初は源柱にあるすべての円盤が、より小さな円盤の上に並べられていた.目標は、円盤を他の柱に移動させるたびに、最後に一つの円盤を目標柱に移動させることで、大きな円盤を小さな円盤の上に置いてはいけない.
    コードの例:
    ;(function(){
        var i = 0;
        /*
        * disc:     
        * src:    
        * aux:     
        * dst:     
        */
        var hanoi = function(disc, src, aux, dst){
            // debugger;
            if (disc > 0) {
                hanoi(disc-1, src, dst, aux);
                document.writeln("Move disc "+ disc +" from "+ src +" to "+ dst + "
    "
    ); hanoi(disc-1, aux, src, dst); i++; } } hanoi(2, " ", " ", " "); document.writeln(" "+ i +"
    "
    ); })();
  • 階乗
  • 数学公式:nn*(n-1)**1
    コードの例:
    ;(function(){
        var i = 10;
        //   
        var factorial = function(num){
            if (num > 0) {
                return num * factorial(num - 1);
            } else {
                return 1;   // 0     1,   1!= 1*0!
            }
        }
        document.writeln(i + "      "+ factorial(i));
    })();