JavaScript 中的递归函数

如果一个函数在内部可以调用本身,,那个这个函数就是递归函数。
递归函数的作用和循环的效果一样
递归很容易发生“栈溢出"Stack overflow 错误,所以必须要添加退出条件return

var num = 1;
function fn(){
    console.log('打印hello');
    if(num == 6){
        return;
    }
    num++;
    fn();
}
fn();
  • 利用递归函数求1-n的阶乘12345.......n
function fn(n){
    if(n== 1) {
        return 1;
    }
    return n * fn(n-1);
}
fn();
//思路:假如用户输入3
//return 3 * fn(2)
//return 3 * fn(2 * fn(1))
//return 3 * fn(2 * 1)
//return 3 *  2
//return 6
  • 利用递归求斐波那契额数列1、1、2、3、5、8、13、21.........
    用户输入一个数字n就可以求出这个数字对应的序列值
function fn(n){
    if(n == 1 || n == 2){
        return 1;
    }
    return fn(n -1) + (n-2);
}
  • 利用递归:根据id返回对应的数据对象
var data = [{
        id : 1,
        name : '家具',
        goods:[{
            id : 10,
            gname : '沙发'
        },{
            id : 11,
            gname : '餐桌'
        }]
    },{
        id : 2,
        name : '厨卫'
    }];
    function getId(data,id){
        var obj={};
        data.forEach(function(item){
            if(item.id == id ){
                obj = item;
            }else if(item.goods && item.goods.length > 0){
                obj = getId(item.goods,id);
            }
        });
        return obj;
    }
    getId(data,1);
    getId(data,2);
    getId(data,10);
    getId(data,11);
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容