js中的递归

一、递归的概念(函数自己调用自己)

**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(); 

你可能感兴趣的:(js中的递归)