망나니 AWOS의 일상
article thumbnail

문제를 요약하자면 0번째 0, 1번째 1, 2번째부터는 0번째 값과 첫 번째 값의 합이라는 것이다.

F(2) = F(0) + F(1) -> 즉, F(n) = F(n-2) + F(n-1)

 

이 문제는 간단하게 재귀를 쓰면 된다. 

import java.util.Scanner;

class Main {
    public static void main(String[] args){
        Scanner sc = new Scanner(System.in);
        int n_th= sc.nextInt();
        
        System.out.println(pibo(n_th));
    }
   
    static int pibo(int n){
        if(n<=1)
            return n;
        
        return pibo(n-2) + pibo(n-1);
    }
}

n에 2가 들어왔을 경우 if 조건문에서 해당이 되지 않으니 건너뛰고 pibo(0) + pibo(1) = pibo(2) = 1이 되는 것이다.

pibo(0)과 pibo(1)의 값을 어떻게 알 수 있냐 한다면

if문의 조건을 보게되면 pibo(0)이 들어왔다면 1보다 작기 때문에 0이 반환이 되는 것이고

pibo(1)이 들어왔다면 1보다 작거나 같기 때문에 1을 반환하게 됨으로써 

결국은 pibo(0) = 0, pibo(1) = 1 이 되는 것과 마찬가지이다.

 

n에 5가 들어왔을 경우를 공책에다 풀이를 해놓았다. 참조했으면 좋겠다. (글씨가 개발새발이다..)

profile

망나니 AWOS의 일상

@AWOS

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!