2011-10-24 28 views
5

Một số vấn đề yêu cầu đệ quy luôn khiến tôi sửa chữa. Tôi không phải luôn luôn có thể đưa ra một thuật toán đệ quy, nhưng tôi biết rằng có một giải pháp đệ quy cho vấn đề.Hướng dẫn đệ quy mở rộng

Tôi thấy các vấn đề như giai thừa và dễ sử dụng bằng cách sử dụng phương pháp đệ quy. Nhưng khi tôi đối mặt với các vấn đề phức tạp hơn như tạo phân vùng của một số http://en.wikipedia.org/wiki/Partition_%28number_theory%29, tôi biết rằng có một cách tiếp cận đệ quy có thể nhưng tôi bị kẹt ngay tại đó. Tôi không thể đưa ra một thuật toán đệ quy. Giả sử tôi muốn in tất cả các kết hợp của một chuỗi hoặc nếu tôi muốn bruteforce một vấn đề Coin Change sử dụng đệ quy, tôi không thể đưa ra một cách tiếp cận đệ quy.

Có cách nào đặc biệt để suy nghĩ để tìm ra cách tiếp cận đệ quy không? Có bất kỳ thuật toán đệ quy rộng rãi hướng dẫn ra có mà có thể giúp tôi giải quyết vấn đề cao cấp hơn?

Trả lời

3

Xem qua Structure and Interpretation of Computer Programs book, được đánh giá cao ở đây trên Stack Overflow và có sẵn trực tuyến miễn phí. Nó sử dụng ngôn ngữ lập trình Đề án để dạy các khái niệm cơ bản về lập trình. Vì Scheme là một ngôn ngữ lập trình hàm, đệ quy được sử dụng rộng khắp mọi nơi - không chỉ nơi bạn sẽ sử dụng nó ngay cả trong các ngôn ngữ lập trình bắt buộc như C hay PHP, mà còn là nơi bạn thường sử dụng cấu trúc lặp. Các ví dụ và các vấn đề trong cuốn sách hiện tại đệ quy trong môi trường sống tự nhiên của nó, nếu bạn sẽ, và không thông qua các tình huống phức tạp.

+0

Cảm ơn bạn. Tôi chắc chắn sẽ đi qua cuốn sách :-) – PuppyHeadedNinja

+0

Trên thực tế cũng có hàng loạt bài học video trực tuyến trên trang web của MIT: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6 -001-cấu trúc-và-giải-của-máy tính-chương trình-mùa xuân-2005/video-bài giảng/Họ là khá thú vị :) – sergico

Các vấn đề liên quan