귀속_개구리 계단 뛰기 (변태판)

1251 단어

제목 설명


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

나의 해법

public int JumpFloor1(int target) {
    if (target == 1) {
        return 1;
    } else {
        int total = 0;
        for (int i = 1; i < target; i++) {
            total += JumpFloorII(target - i);
        }
        return total+1;
    }
}

대장부의 해법


① f(n) = f(n-1) + f(n-2) +f(n-3) + ... + f(2) + f(1)
② f(n-1) = f(n-2) +f(n-3) + ... + f(2) + f(1)
①②에 의하면 f(n)= 2f(n-1);
public static int jumpFloor2(int target) {
    if (target == 1) {
        return 1;
    } else {
        return 2 * jumpFloor2(target - 1);
    }
}

궁극적 해법


f(n) = 2f(n-1) (n>=2) f(n) = 1 (n=1)
귀속 방정식 구해:
f( n ) = 2f( n - 1 )
​ = 2*2f( (n-1) - 1 ) = 22f( n - 2 )
​ = 2*2*2f( (n-2) - 1 ) = 23f( n - 3 )
​ =2*2*2*2......*2f( (n-(n-3)) -1) = 2n-2f( n - (n-2) ) = 2n-2f( 2 )
​ =2*2*2*2......*2f( (n-(n-2)) -1) = 2n-1f( n - (n-1) ) = 2n-1f( 1 ) = 2n-1
public int JumpFloor3(int target) {
    return (int) Math.pow(2, target - 1);
}

좋은 웹페이지 즐겨찾기