递归是什么?
程序调用自身就叫做递归。
递归一般用来算一些比较麻烦的算法问题。
递归跟循环的区别,循环注重过程,而递归值注重结果。
简单的来说就是:用循环能实现的,递归一般可以实现,但是能用递归实现的,循环不一定能。因为有些题目①只注重循环的结束条件和循环过程,而往往这个结束条件不易表达(也就是说用循环并不好写);②只注重循环的次数而不注重循环的开始条件和结束条件(这个循环更加无从下手了)。
要想理解递归一时半会也弄不明白。但是写递归需要记住三个步骤。
1.首先去找临界值,即无需计算,获得的值。
- 找这一次和上一次的关系
假设当前函数已经可以使用,调用自身计算上一次和这一次的关系。
下面是递归实现的一个简单列子。/*
sum(100) = sum(99) + 100;
sum(n) = sum(n - 1) + n;
计算1+2+3+…+n的和
*/
function sum(n){
if(n == 1){
return 1;
}
return sum(n - 1) + n;
}
alert(sum(100));
假如是计算1+2+…+100的和。首先要找出不用去计算就可以得到的值。
1+…+100 ,哪么1是确定的值。 然后再去找最后一次与上一次的关系。哪么就可以直接得出 1+…+100的值。
还没有评论,来说两句吧...