// 1, 1, 2, 3, 5, 8, 13, 21, 34, 55...
private static fibonacci(int n) {
if (n = 0 || n = 1) {
return 1;
}
return fibonacci(n-1) + fibonacci(n-2);
}
이미 계산한 fibo(3) 이하의 수를 여러번 중복 계산하게 된다.
return mem[n] = fibonacci(n-2) + fibonacci(n-1);
if (mem(n) != -1 ) return mem[n];
if (n == 0 || n == 1 ) return 1;
private static final long[] mem = new long[101];
private static long fibonacci(int n) {
if (mem[n] != -1) {
return mem[n];
}
if (n == 0 || n == 1 ) {
return 1;
}
return mem[n] = fibonacci(n-1) + fibonacci(n-2);
}
public static void main(String[] args) {
Arrays.fill(mem, -1);
System.out.println(fibonacci(10));
}
위를 재귀로 푸는경우 n이 50일 때 재귀가 20억 번이 넘거가게된다. 방심하지 말자
https://code-lab1.tistory.com/7
취업과 이직을 위한 프로그래머스 코딩 테스트 문제 풀이 전략 - 자바편