Tôi đến từ một nền tảng vật lý, và do đó, rất nhiều toán học. Tôi thấy dễ dàng phát hiện ra các vấn đề rất phù hợp với các giải pháp lập trình đệ quy / động bằng cách tìm các điểm tương đồng với bằng chứng bằng cảm ứng .
Bằng chứng bằng cảm ứng, bạn có hai phần:
- bạn chứng minh rằng nếu điều gì đó đúng với lần lặp N, thì điều đó cũng đúng với lần lặp N + 1
- bạn chứng minh rằng điều đó đúng với phép lặp 1
Trong lập trình đệ quy / lập trình động:
- bạn xác định một điều kiện thoát (ví dụ: bạn cứng cáp giải pháp cho lần lặp 1)
- bạn tính toán giải pháp cho lần lặp N đưa ra giải pháp cho lần lặp N-1
Vì vậy, như những người khác trả lời, đó là vấn đề kinh nghiệm và chọn gợi ý, nhưng bạn có thể sử dụng lại các kỹ năng khác để hướng dẫn bạn. Sau đó, bạn cần luôn có hai phần mà tôi đã đề cập: nếu bạn không, thì nó sẽ không hoạt động.
Ví dụ: để tạo tất cả các hoán vị của một tập hợp:
- điều kiện thoát: nếu bạn chỉ có một phần tử, trả lại nó
- đệ quy: hoán vị của một tập hợp N vật phẩm là N tập hợp hoán vị bạn có được bằng cách chọn từng phần tử và kết hợp với tất cả các tập hợp N-1 của (nhiều) hoán vị của tập hợp con bạn nhận được bằng cách loại bỏ phần tử.