js递归通俗的理解

JavaScript042

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

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

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

function fact(num){

    if (num<=1){

        return 1

    }else{

        return num*fact(num-1)

    }

}

求 1-100 的和

1,1,2,3,5,8,13,21,34,55,89...求第 n 项

JS 递归 假如楼梯有 n 个台阶,每次可以走 1 个或 2 个台阶,请问走完这 n 个台阶有几种走法

原理: clone(o) = new Object返回一个对象

1、很多时候可以用递归代替循环,可以理解为递归是一种特殊的循环,但通常情况下不推荐这样做。

2、递归一般是在函数里面把函数自己给调用一遍,通过每次调用改变条件,来结束循环。

3、递归在数据格式一致,在数据层级未知的情况下,比普通的遍历更有优势。

4、递归在异步的时候,更容易理解,且更容易实现,因为可以在异步的回调里面,调用自己来实现每次都能拿到异步的结果再进行其他操作。

5、递归实现的快速排序比普通遍历实现的排序效率更好。

如果num=5的话

第一次进入时执行esle

得return 5 * factorial(4)

factorial(4)同样得return 4 * factorial(3)

factorial(3)同样得return 3 * factorial(2)

factorial(2)同样得return 2 * factorial(1)

factorial(1)则执行if得 return 1

将factorial(1)代入factorial(2),再代factorial(3),再代入factorial(4),

再代入 return 5 * factorial(4)最终为 return 5*4*3*2*1