Thường thì một bài toán có đủ cả hai tính chất này, chúng ta có thể dùng quy hoạch động được. Một câu hỏi rất thú vị là không dùng quy hoạch động có được không? Câu trả lời là có, nhưng nếu bạn đi thi code, bạn trượt là cái chắcccc. Để hiểu rõ hơn, chúng ta sẽ đi tìm hiểu các tính chất trong những phần dưới đây.
function fib (n) {
if (n <= 1) return n;
return fib(n - 1) + fib(n - 2);
}
int fib(n) {
dp[1] = 1;
for (int i = 2; i <= n; i++)
dp[i] = dp[i - 1] + dp[i - 2];
return dp[n];
}