이미 계산된 결과(하위 문제)는 별도의 메모리 영역에 저장하여 다시 계산하지 않도록 설계함으로써 메모리를 적절히 사용하여 수행 시간 효율성을 비약적으로 향상시키는 방법이다.
int memo[100];
public int fibonacci(int n) {
if (n <= 1)
return n;
else if (n == 2)
return 1;
else {
if (memo[n] > 0)
return memo[n];
memo[n] = fibonacci(n-1) + fibonacci(n-2);
return memo[n];
}
}