首頁 > web前端 > js教程 > 主體

JS遞迴的用法詳解

coldplay.xixi
發布: 2020-06-29 17:46:32
轉載
3253 人瀏覽過

JS遞迴的用法詳解

遞迴:

函數中用呼叫函數自己,此時就是遞歸,遞歸一定要有結束條件

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

	改进如下:
	    var i=0;
    function f1() {
        i++;
        if (i<5){
            f1();
        }
        console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚讲故事:");
    };
    f1();
登入後複製

相關學習教學:javascript教學

小栗子:

#遞歸實作:求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
執行:
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
登入後複製
登入後複製

再來幾個:

    //递归案例:求一个数字各个位数上的数字的和:  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),此時程式碼等待
此時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
執行:
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
登入後複製
登入後複製

再來幾個:

    //递归案例:求一个数字各个位数上的数字的和:  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));
登入後複製

以上是JS遞迴的用法詳解的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!