递归

递归即自己调用自己,称为递归调用

解决递归问题的步骤:

1. 假设递归函数已经写好

2. 寻找递推关系

3. 将递推关系的结构转换为递归体

4. 将临界条件加入到递归体中

例1:求阶乘

function fn(n) {
    if(n===1) {
        return 1;
    }
    return n*fn(n-1);
}
console.log(fn(3));

例2: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。

思路:假设第一次跳上1级,那么就有f(n-1)种跳法,第一次跳2级,那么就有f(n-2)中跳法。所以总共就有f(n-1)+f(n-2)种。

function jumpFloor(number){
    if(number<=2){
        return number;
    }
    return jumpFloor(number-1)+jumpFloor(number-2);
}

例3:兔子生兔子--从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月后每个月又生一对兔子,假如兔子都不死,问每个月的兔子对数为多少?

思路:1,1,2,3,5...分析数据可得f(n)=f(n-1)+f(n-2)

function born(n) {
    if(n < 3) {
        return n;
    }
    return born(n-2)+born(n-1)
}

 

posted @ 2018-04-17 08:26  PeriHe  阅读(138)  评论(0编辑  收藏  举报