1. 程式人生 > >JS遞迴的用法JavaScript遞迴)

JS遞迴的用法JavaScript遞迴)

遞迴:

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

    function f1() {
        console.log("從前有座山,山裡有個廟,廟裡有個老和尚給小和尚講故事:");
    };
    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));