您的位置 首页 技术

JS递归的用法详解

递归: 函数中用调用函数自己,此时就是递归,递归一定要有结束条件 function f1() { console.log("从前有座山,山里有个庙,庙里有个老和尚给小和尚…

递归:

函数中用调用函数自己,此时就是递归,递归一定要有结束条件

    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+13+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),此时代码等待此时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+13+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));

以上就是JS递归的用法详解的详细内容,更多请关注24课堂在线网其它相关文章!

本文来自网络,不代表24小时课堂在线立场,转载请注明出处:https://www.24ketang.cn/88953.html

为您推荐

返回顶部