用递归实现跳台阶问题

180 阅读1分钟

1.思路

  • 如果两种跳法,1阶或者2阶。
  • 假定第一次跳的是1阶,那么剩下的是n-1个台阶,跳法是f(n-1);
  • 假定第一次跳的是2阶,那么剩下的是n-2个台阶,跳法是f(n-2);
  • 因此可以得出总跳法为: f(n) = 1*f(n-1) + 1*f(n-2) 
  • 通过实际的情况可以得出:只有一阶的时候 f(1) = 1 ,只有两阶的时候可以有 f(2) = 2
  • 因此这是一个斐波那契数列,可以用递归来写.

2.代码

public int jumpFloor(int target) {
        if(target<=0){
            return 0;
        }else if(target==1){
            return 1;
        }else if(target==2){
            return 2;
        }else{
            return jumpFloor(target-1)+jumpFloor(target-2);
        }
    }