js递归通俗的理解

JavaScript012

js递归通俗的理解,第1张

所谓的递归函数就是在函数体内调用本函数。使用递归函数一定要注意,处理不当就会进入死循环。递归函数只有在特定的情况下使用 ,比如阶乘问题

下面做一个10以内的阶乘试试看:

function fact(num){

    if (num<=1){

        return 1

    }else{

        return num*fact(num-1)

    }

}

其实,这就是一个简单的函数传参例子,我来给你简单讲一下:

foo(3)也就是往函数里面传入一个值等于3,也就是i=3

function foo(i) {

if (i <0)//因为i=3了,这个时候3不是小于0,因此会跳到后面去执行,

return//只有当i小于0时,才会输出结果,最终结果就等于0;

console.log('begin:' + i)

foo(i - 1)

console.log('end:' + i)

}

首先先解释一下什么是递归函数:什么是递归方法:就是一个方法,自己调用自己

但是一定要注意控制好合适的跳出,不然就会死循环,如图:

所以我们平时一定要注意,递归函数里调用函数本身的时候一定要要合理的控制循环跳出的语句;比如我们来看一题很经典的面试题,请用递归方法算出1-20之间每个数的和

 function calc(num){

            //这个if是退出递归的条件

            if(num===1) {    //如果没有这个if条件

                return num

            }

            return num + calc(num-1)  //

        }

console.log(calc(3))  //这里为了方便我们理解我们可以先用num===3替代进去,具体的方式以及步骤分解可以看图:

如果有大佬有更好的理解方法,可以留言或者私信哦,互相学习,互相进步~~~