本篇文章主要介绍了"递归和闭包的深刻理解",主要涉及到理解,递归方面的内容,对于Javascriptjrs看球网直播吧_低调看直播体育app软件下载_低调看体育直播感兴趣的同学可以参考一下:
闭包以及递归 在我们平时的工作可能递归用的不是很多,闭包可能我们在不经意间就使用了,所以建议大家有必要的去了解一下。如果有新学者,自己建议还是有必...
闭包以及递归
在我们平时的工作可能递归用的不是很多,闭包可能我们在不经意间就使用了,所以建议大家有必要的去了解一下。如果有新学者,自己建议还是有必要去看一下作用域链的,有很多息息相关的东西存在。
递归指函数自己调用自己。
当然我们在使用递归时也要注意一些问题:
自己调用自己就相当于循环一样,以此来到达一些便利;
我们在使用递归时必须要有跳出的条件,不然就会出现死递归;
递归在计算的时候会极大的消耗计算机的性能,在计算的值比较小的时候我们可以忽略,当我们使用递归需要循环的值比较大的时候,我们就不得不考虑其的计算效率,那将是一个比较庞大的计算量
如果我们想深刻的理解递归的话,个人建议可以看一些高数之类的书籍,毕竟在递归中,其中的划归还是很重要的,如果没有一些数学的铺垫个人觉得还是比较费劲的
下面通过几个例子来给大家讲解一下普通的递归:
1. 求兔子序列(斐波那契数列)的前几项;
var fib = function ( n ) {
if ( n === 0 || n === 1 ) return 1;
return fib( n - 1 ) + fib( n - 2 );
};
2. 求n^m次方;
function fn(a,b){
if(b==0)return 1;
return fn(a,b-1)*a;
}
3. 求等差数列前几项的和;
function fn(n) {
if (n == 1)return 1;
return fn(n - 1) + (2 * n - 1)
}
在操作递归时,递归会把自己参数中的值进行传递,直到我们传递的值达到我们设置的跳出条件时才会停止传递,而后面的公式指的是与我们需要得到的值进行的相对应操作,当我们写在函数中的值就相当于每一个传递的实参。
但是递归的性能消耗是我们不得不重视的,那么下面通过对于数据的缓存来给大家介绍一下如何让递归减少性能的消耗。