一、递归的概念(函数自己调用自己)
**1. ** 在程序中函数直接或间接调用自己
**2. **跳出结构,有了跳出才有结果
**3. **递归的思想就是将一个未知问题转换为一个已解决的问题来实现
二、实例
例1:求1-100的和
思路:第100项与前99项的和,第99项与前98项的和,第98项与前97项的和。。。第3项与前2项的和,第1项与前1项的和(sum(1))
所以函数为:
function sum(n){
if(n==1) return 1;//如果是第一项直接返回,
return sum(n-1) + n;//不是第一项就与前面的相加,将结果返回
}
例2:斐波那契数列(兔子数列)
已知一对兔子每个月可以生一对小兔子,而一对兔子从出生后第3个月起每月生一对小兔子。假如一年内没有发生死亡现象,那么,一对兔子一年内(12个月)能繁殖成多少对?
已知兔子的规律为数列: 0,1,1,2,3,5,8,13,21...
思路:新的一项为前项之合。
var arr=[];
function Rabbit(n){
if(n<=2){
return 1;
}else{
if(arr[n]){
return arr[n];
}else{
arr[n]=Rabbit(n-1)+Rabbit(n-2);
return arr[n];
}
}
}
document.write(Rabbit(8));
例3:无限运动
var arr = [
{left:100,top:200},
{left:300,top:250},
{left:400,top:400},
{left:500,top:450}
];
var n = 0;
function next(){
move(oBall,arr[n],{complete:next});//这是一个运动函数,运动结束之后进行回调next函数
n++;
if(n == arr.length){
n = 0;
}
}
next();