코딩연습이 좋아서/이론이 좋아서

Recursive, Tree, Graph(DFS, BFS 기초) - 피보나치 재귀(메모이제이션)

zoaseo 2024. 12. 12. 14:51
public class Main {
    static int[] fibo;

    public static int DFS(int n) {
        if (fibo[n] > 0) return fibo[n];
        if (n == 1) return fibo[n] = 1;
        else if (n == 2) return fibo[n] = 1;
        else return fibo[n] = DFS(n - 2) + DFS(n - 1);
    }

    public static void main(String[] args) {
        int n = 45;
        fibo = new int[n + 1];
        DFS(n);
        for (int i = 1; i <= n; i++) {
            System.out.print(fibo[i] + " ");
        }
    }
}

- 더 빨리 구하기 위해 fibo 배열에 이미 구한 값은 저장을 해놓는다.