js递归函数

递归函数:是指函数调用自己本身,则称该函数为递归函数。

        //以下就是递归函数,但是会死循环,因为没有出口
        function f(){
            console.log('递归函数');
            f();
        }

        f();

递归运算会无终止地自身调用。因此,在递归运算中要结合 if 语句进行控制,只有在某个条件成立时才允许执行递归,否则不允许调用自身。

 

例子1:

        // 1 1 2 3 5 8 13 21..... 根据规律求出第20个数是多少
        //规律 n = (n-1) + (n-2) 就是当前这个数等于前面两个数相加的和

        function f(n){
           
            if (n <= 1 ) {
                return n;
            }else{
                return f(n-1) + f(n-2);
            }
        }
        
        var a = f(9);//求第几个数是多少 就是第8个数+第7个数的和
        console.log(a);//打印34

 

例子2:

        //0 1 3 6 10 15 21... 求第20位数是多少

        //规律:(n-1) + n

        function f(n){
            if (n == 0) {
                return 0;
            }else{
                return n + f(n-1);
            }
        }

        console.log(f(0));
        console.log(f(1));
        console.log(f(2));
        console.log(f(3));
        console.log(f(20));

 

例子3:

        var obj = {
            a:{
                name:"john",
                age:26,
                sex:"male",
                child:{
                    firstChild:"mak",
                    laseChild:"loy"
                }
            },

            b:{
                name:"joe", 
                age:28, 
                sex:"female", 
                child:{
                    firstChild:"bill", 
                    secondChild:"ruth", 
                    laseChild:"yoki",
                    c:{
                        name:'lige',
                        age:33
                    }
                }
            }
        };

       function getObjValue(obj){
        for(var k in obj){
            if(typeof obj[k] !== "object"){
                console.log(obj[k]); //递归出口
            }else{
                getObjValue(obj[k]); //obj[k]是一个对象 继续调用自身遍历
            }
         }
       };

       getObjValue(obj);

 

posted @ 2021-02-22 23:47  华北业余选手  阅读(237)  评论(0)    收藏  举报