当前第2页 返回上一页
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | 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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 | 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
再来几个:
1 2 3 4 5 6 7 8 9 10 | function getEverySum(x) {
if (x<10){
return x;
}
return x%10+getEverySum(parseInt(x/10));
}
console.log(getEverySum(1364));
|
1 2 3 4 5 6 7 8 9 | function getFib(x) {
if (x==1||x==2){
return 1
}
return getFib(x-1)+getFib(x-2);
}
console.log(getFib(12));
|
以上就是JS递归的用法详解的详细内容,更多文章请关注木庄网络博客!
返回前面的内容
相关阅读 >>
js怎么添加css样式
带你了解js中[]、{}、()区别(详解)
js是什么语言
jq实现弹幕效果
你知道在js中如何比较数值大小吗?
聊聊css 与 js 是如何阻塞 dom 解析和渲染的
js是什么编程语言?
js如何实现蒙版效果
javascript如何删除子节点属性
js如何修改注册表
更多相关阅读请进入《js》频道 >>
人民邮电出版社
本书对 Vue.js 3 技术细节的分析非常可靠,对于需要深入理解 Vue.js 3 的用户会有很大的帮助。——尤雨溪,Vue.js作者
转载请注明出处:木庄网络博客 » JS递归的用法详解