什么叫做递归:
一个函数在内部可以调用其本身,那么这个函数就是递归函数。简单理解:函数内部自己调用自己, 这个函数就是递归函数
如下所示:
function fn(){
fn();
}
fn();
这个就是递归函数,但是打印出来的话会报错, 因为递归函数的作用和循环效果一样。当没有给他返回值的时候,它就会一直死循环下去
因为递归很容易发生“栈溢出”错误,所以必须要加退出条件 return
正确的写法应该是:
var num = 1;
function fn(){
console.log('123');
if(num == 5){
return;
}
num++;
fn();
}
fn();
递归的作用
1.以实现的功能:树形列表,树的操作等等
2.递归每次执行都会消耗一个函数,相比for肯定会低,后端作为公共资源,慎用,出问题就是事故,前端情况好点,界面卡住了就让用户刷新吧,影响不大,用起来比for简洁多了
求阶乘:
function fn(n){
if(n == 1){
return 1;
}
return n*fn(n-1);
}
console.log('1-20的阶乘为:'+fn(20));
console.log('1-10的阶乘为:'+fn(10));
console.log('1-5的阶乘为:'+fn(5));
斐波那契数列:
function fb(n){
if(n === 1 || n === 2){
return 1;
}
return fb(n-1) + fb(n-2);
}
console.log('第3项斐波那契数列值为:'+fb(3));
console.log('第10项斐波那契数列值为:'+fb(10));
到此这篇关于js递归详述的文章就介绍到这了