JS递归的用法详解

互联网 20-6-29

递归:

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

    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));
flowchart 箭头图标 勿删

递归:

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

    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递归的用法详解的详细内容,更多内容请关注技术你好其它相关文章!

来源链接:
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表本站的观点或立场
标签: 递归
上一篇:php获取远程图片并下载保存到本地的方法分析 下一篇:了解JS中!/+/-/~ function() {/*...*/}()是什么意思

相关资讯