JS再帰の使い方を詳しく解説

coldplay.xixi
リリース: 2020-06-29 17:46:32
転載
3400 人が閲覧しました

#############################################再帰:###

関数は関数自体を呼び出します。これは再帰です。再帰には終了条件が必要です

    function f1() {
        console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:");
        f1();
    };
    f1();//浏览器崩溃,因为没有结束条件——死循环

	改进如下:
	    var i=0;
    function f1() {
        i++;
        if (i<5){
            f1();
        }
        console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:");
    };
    f1();
ログイン後にコピー
関連する学習チュートリアル: javascript チュートリアル

#Little Lizi:JS再帰の使い方を詳しく解説

再帰的実装: n 個の数値の合計を求める n=5 ------->5 4 3 2 1
//for 循环写法:
    var sum=0;
    for (var i=0;i<=5;i++){
        sum+=i;
    }
    console.log(sum);
----------------------分割线---------------------------

   function getSum(x) {
        if (x==1){
          return 1
        }
        return x+getSum(x-1);
    };

    var sum1=getSum(5);
    console.log(sum1);
    console.log(getSum(10));
ログイン後にコピー

実行プロセス:

コードは getSum(5) を実行します—>関数を入力します。この時点では x は 5 であり、5 getSum(4) が実行されます。これ コードが待機するとき

この時点では 5 getSum(4)、コードは最初に計算を行わず、最初に getSum(4) を実行し、関数に入り、4 getSum(3) を実行し、待機します。最初の実行は getSum( 3)、関数に入り、3 getSum(2) を実行、待機、最初に getSum(2) を実行、関数に入り、2 を実行 getSum(1); 待機、最初に getSum(1) を実行、x== の判定を実行1, return 1 ,したがって、このときの getSum(1) の結果は 1, 出始めます 2 getSum(1) このときの結果は次のとおりです: 2 1

Execution:
getSum(2) ---->2 1

3 getSum(2) この時の結果は 3 2 14 getSum(3) この時の結果は 4 3 2 15 getSum(4) これ 結果は 5 4 3 2 1

    结果:15
ログイン後にコピー

#さらにいくつか:

    //递归案例:求一个数字各个位数上的数字的和:  123   --->6 ---1+2+3
    //523
    function getEverySum(x) {
        if(x<10){
            return x;
        }
        //获取的是这个数字的个位数
        return x%10+getEverySum(parseInt(x/10));
    }
    console.log(getEverySum(1364));//5
ログイン後にコピー
 //递归案例:求斐波那契数列

    function getFib(x) {
        if(x==1||x==2){
            return 1
        }
        return getFib(x-1)+getFib(x-2);
    }
    console.log(getFib(12));
ログイン後にコピー

## となります。

##再帰:


関数は関数自体を呼び出します。これは再帰です。再帰には終了条件が必要です

    function f1() {
        console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:");
        f1();
    };
    f1();//浏览器崩溃,因为没有结束条件——死循环

	改进如下:
	    var i=0;
    function f1() {
        i++;
        if (i<5){
            f1();
        }
        console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:");
    };
    f1();
ログイン後にコピー


小さな栗:

再帰的実装: n 個の数値の合計を求める n=5 ------->5 4 3 2 1

//for 循环写法:
    var sum=0;
    for (var i=0;i<=5;i++){
        sum+=i;
    }
    console.log(sum);
----------------------分割线---------------------------

   function getSum(x) {
        if (x==1){
          return 1
        }
        return x+getSum(x-1);
    };

    var sum1=getSum(5);
    console.log(sum1);
    console.log(getSum(10));
ログイン後にコピー
実行処理: コードは getSum(5) を実行します—>関数を入力します このとき、x は 5 なので、5 getSum(4) が実行されます。 waits. このとき、 5 getSum(4)、コード 最初に計算は行われません、getSum(4)が最初に実行されます、関数に入ります、実行します 4 getSum(3)、待機します、最初にgetSum(3)を実行します、関数に入り、3 getSum(2) を実行、待機、最初に getSum を実行 (2)、関数に入り、2 を実行 getSum(1); 待機、最初に getSum(1) を実行、x==1 の判定を実行、 return 1、つまり、 この時点の getSum(1) の結果は 1 です。 歩き始めます

2 getSum(1) この時点の結果は次のとおりです: 2 1Execution:getSum (2)---->2 1

3 getSum(2 ) このときの結果は 3 2 1

4 getSum(3) このときの結果は 4 3 2 1

5 getSum(4) このときの結果は 5 4 3 2 1

    结果:15
ログイン後にコピー
あといくつか:

rrreerrree となります。

以上がJS再帰の使い方を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:csdn.net
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート