这篇文章主要介绍关于JS递归的用法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!
函数中用调用函数自己,此时就是递归,递归一定要有结束条件
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递归的用法的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注亿速云行业资讯频道!
亿速云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。