优秀的编程知识分享平台

网站首页 > 技术文章 正文

JavaScript递归的用法(js递归处理数据)

nanyue 2024-07-25 06:09:23 技术文章 13 ℃

递归:

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

 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));

作者:$(薛定谔的喵)

来源:CSDN

原文:https://blog.csdn.net/chad97/article/details/82729021

版权声明:本文为博主原创文章,转载请附上博文链接!

Tags:

最近发表
标签列表