实战面试题!你会做吗

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

解题思路-->假设:当 n =0 ,时 f(0) = 0;

                                  n =1 ,时 f(1) = 1;

                                  n =2,时 f(2) = 2;

                                  n =3,时 f(3) = 3;分析一次跳完:没有跳法,两次跳完 :1种,三次跳完:一种

                                  n=4,时 f(4) =  5;分析一次跳完:没有跳法,两次跳完: 1种,三次跳完:3种,四次跳完:1种

                              n=5,时 f(5) = 8;分析一次跳完:没有跳法,两次跳完 :没有,三次跳完:6种(122,212,221);四次跳完:(1211,1121,1112,2111),五次跳完:1种

发现规律:f(3) = f(1)+f(2),f(4) = f(3)+f(2),f(5)=f(4)+f(3)--->f(n)=f(n-1)+f(n-2)

编程设计:

public class Solution {
    public int JumpFloor(int n) {
        int former1 = 1; 
        int former2 = 2;
        int target = 0;
        if(n == 0 ) {
            return 0;
        }
    if(n == 1 ) {
            return 1;
        }
        if(n == 2 ) {
            return 2;
        }else {
            for(int i = 3;i <= n;i++) {
                target = former1 + former2;
                former1 = former2;
                former2 = target;
            }
            return target;
        }
    }
}

猜你喜欢

转载自blog.csdn.net/liang194237/article/details/81291309