입력크기가 작은 부분 문제들을 해결한 후, 해당 부분 문제의 해를 활용해서
보다 큰 크기의 부분 문제를 해결, 최종적으로 전체 문제를 해결하는 알고리즘
ex) 피보나치 수열
static int[] arr = new int[10000];
private static int fibonacci(int n){
if (n >= 2) {
if (arr[n] == 0) {
arr[n] = fibonacci(n - 1) + fibonacci(n - 2);
return arr[n];
}
else
return arr[n];
}
else if (n <= 1) {
if (n == 1)
arr[n] = 1;
return (arr[n]);
}
return 0;
}
private static int fibo(int n)
{
int[] arr = new int[n+1];
arr[0] = 0;
arr[1] = 1;
for (int i = 2; i < n + 1; i++)
arr[i] = arr[i-1] + arr[i-2];
return arr[n];
}