7. 계단을 뛰어넘다

5680 단어 검지offer

제목


개구리 한 마리가 한 번에 1계단을 올라갈 수도 있고 2계단을 올라갈 수도 있다.이 개구리가 n급의 계단을 뛰어오르는 데는 모두 몇 가지 방법이 있는지 구해라.

생각1


직접 귀속으로 n계단에 대해 말하자면 n-1 또는 n-2계단에서만 뛰어오를 수 있기 때문에F(n)=F(n−1)+F(n−2),f(1)=1,f(2)=2
 /**
     *  
     * *  n , n-1 n-2 , 
     * F(n) = F(n-1) + F(n-2)
     * f(1)=1
     * f(2)=2
     */
    public int JumpFloor(int target) {
        if (target <= 1) {
            return 1;
        }
        if (target <= 2) {
            return 2;
        } else {
            return JumpFloor(target - 1) + JumpFloor(target - 2);
        }
    }

생각 2


교체 방법으로 두 변수로 기록f(n−1)f(n−2)
    /**
     *  , f(n-1) f(n-2)
     */
    public int JumpFloor_2(int target) {
        int one = 1, two = 2, fN = 0;
        if (target <= 0) {
            return 0;
        } else if (target == 1) {
            return 1;
        } else if (target == 2) {
            return 2;
        } else {
            for (int i = 3; i <= target; i++) {
                fN = one + two;
                one = two;
                two = fN;
            }
            return fN;
        }
    }

좋은 웹페이지 즐겨찾기