JS递归的常见用法

JavaScript020

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

递归是Promise机制的核心之一:then方法返回另一个promise2,其内容是由回调方法的返回值决定的;回调中可以返回promise3,使外面的promise2的内容成为promise3的内容,也就是说,如果要用promise来递归,只需要在then回调中返回递归promise即可

举例如下:

//假如用jQuery

function get(url, p) {

return $.get(url + "?page=" + p)

.then(function(data) {

if(!data.list.length) {//递归结束条件

return []

}

return get(url, p+1)//递归调用

.then(function(nextList) {

return [].concat(data.list, nextList)//合并递归内容

})

})

}

get("urlurl", 1).then(function(list) {

console.log(list)//your full list is here

})

之前给小伙伴们分享过JS的 setInterval 和 setTimeout 函数,这篇文章要分享给大家的是JS当中的递归函数。

简单来说,递归函数就是自己调用自己,然后在一定条件下会停止或者跳转递归。

这个例子简单的利用递归函数实现了一个小需求,希望这篇文章对初学前端的小伙伴有帮助。