版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
JavaScript中递归函数
什么是递归?
就是在函数体内调用本函数。是一种调用模式,是一种逻辑程序基础的体现。
== 递归会消耗大量内存,在实际开发中很少使用==
注意:递归最重要的是终止条件。
利用递归计算n的阶乘
function acc(n){
if(n<=1){
return 1;
}else{
return n*acc(n-1)
}
}
console.log(acc(4));
这里计算的是4的阶乘;从1开始,return 1;然后2,return 2乘acc(1)——就是2乘1;依次…
利用递归求斐波那契数列(1,1,2,3,5,8,13,21,34,55,89…)
var m=1;
while(true){
function fiber(m){
if(m-1==0 || m-2==0){
return 1;
}else{
return (fiber(m-1)+fiber(m-2));
}
}
console.log(fiber(m));
m++;
}
根据斐波那契数列的特点,m代表数列的第几项,我们可以得到fiber(m)=fiber(m-2)+fiber(m-1);
那么就要求:m>2;所以就用到了if(){}else{} 分支结构。
当m=1,m=2时,return 1;
这里利用了while做了一个死循环,按顺序输出每一项的数字。
不理解可以从利用递归计算 1+2+3+4+5=?开始;
function fn(n){
if(n<=1){
return 1;
}else{
return n+fn(n-1)
}
}
console.log(fn(5))
这里n既代表第几项,又代表对应项里的数字
return 当前项n加上前一项的值。