3.9 变态跳台阶

变态跳台阶

一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
思路:
式一: f(n) = f(1)+f(2)…+f(n-2)+f(n-1)
式二: f(n-1) = f(1)+f(2)…+f(n-2)
相减: f(n) - f(n-1) = f(n-1) ==========> f(n) = 2* f(n-1)\
方法一: 递归
int jumpFloorII(int number) {
       if(number <= 1){
           return 1;
       }
       if(number == 2){
           return 2;
       }
       return 2 * jumpFloorII(number-1);
}
测试一:

在这里插入图片描述

方法二: 循环
int jumpFloorII(int number) {
      if(number == 0){
           return 0;
       }
       if(number == 1){
           return 1;
       }
       if(number == 2){
           return 2;
       }

       int jumpNum = 0;
       int jumpLastNum = 2;
       for( int i = 3;i<= number; ++i){
           jumpNum = 2*jumpLastNum;
           jumpLastNum = jumpNum;
       }
       return jumpNum;
}
测试二:

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_37518595/article/details/84764356