Ghi nhớ kết quả không dùng đệ quy
Bài học 5 trên 15 trong khóa học Nhập môn quy hoạch động của Coddy.
Trong bài học trước, chúng ta đã tìm hiểu về kỹ thuật ghi nhớ kết quả (memoization) và cách kỹ thuật này giúp cải thiện độ phức tạp thời gian của các lời giải đệ quy. Trong bài học này, chúng ta sẽ khám phá cách dùng đệ quy với kỹ thuật ghi nhớ kết quả để giải quyết vấn đề hiệu quả hơn.
Đệ quy là một kỹ thuật lập trình, trong đó một hàm gọi chính nó để giải quyết vấn đề. Lời giải đệ quy có thể rất tinh tế và trực quan, nhưng cũng có thể kém hiệu quả, đặc biệt khi cùng một hàm được gọi nhiều lần với cùng các đối số. Đây là lúc kỹ thuật ghi nhớ kết quả phát huy tác dụng. Bằng cách lưu kết quả của những lần gọi hàm trước, chúng ta có thể tránh các phép tính dư thừa và cải thiện đáng kể hiệu suất của lời giải đệ quy.
Thử thách
DễGiả sử mỗi lần bạn có thể bước lên 1 bậc hoặc 2 bậc.
Viết một hàm có tên count_ways, nhận một số nguyên n và trả về số cách để leo cầu thang có n bậc.
Hàm cần dùng kỹ thuật ghi nhớ kết quả để tránh tính toán lặp lại.
Đừng dùng đệ quy trong thử thách này!
Tự làm thử
def count_ways(n):
# TODO: viết code của bạn ở đâyTất cả bài học trong Nhập môn quy hoạch động
1Giới thiệu về quy hoạch động
Quy hoạch động là gì?Vì sao quy hoạch động quan trọng?Ứng dụng trong nhiều lĩnh vực3Thuật toán quy hoạch động
Dãy con chung dài nhấtBài toán cái ba lôBài toán đổi tiềnKhoảng cách chỉnh sửaTự luyện tập: Trình biên dịch Python online