JS递归的常见用法

JavaScript037

JS递归的常见用法,第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、递归实现的快速排序比普通遍历实现的排序效率更好。

你后加的return 是为了把递归的结果返回给调用的函数。也就是把 findParent(e.parentNode,str)的结果返回给上层调用的 findParent 这样递归才有意义

其实难点就在于对递归函数的理解。所谓递归函数,就是函数在执行时调用自己。程序在调用一个函数时,首先执行这个函数的程序,执行完毕后返回到原调用前的上一级程序继续运行这一级程序。调用递归函数也是如此,在执行完递归函数,得到3之后,它要退出递归函数回到调用它的原来的主程序继续去执行原来的主程序。由于调用递归函数时程序是逐级进行的,所以返回时也是逆向逐级执行程序并返回的,即在得到3后,返回上一级执行这一级的程序就得到4(即再次执行document.writeln(num1)),再返回上一级执行这一级的程序得到5(即再次执行document.writeln(num1))。