2011-10-24 18 views
5

Niektóre problemy, które wymagają rekursji zawsze umieścić mnie w kropce. Nie zawsze jestem w stanie wymyślić rekurencyjny algorytm, ale wiem, że istnieje rekurencyjne rozwiązanie tego problemu.Obszerne Recursion Tutorial

znajdę problemy jak silni i Fibonacciego łatwe do wdrożenia za pomocą rekurencyjnej podejście. Ale gdy mam do czynienia z bardziej złożonymi problemami, takimi jak generowanie partycji o numerze http://en.wikipedia.org/wiki/Partition_%28number_theory%29, wiem, że istnieje możliwe podejście rekurencyjne, ale utknąłem w tym miejscu. Nie mogę opracować algorytmu rekursywnego. Załóżmy, że chcę wydrukować wszystkie kombinacje ciągu znaków lub jeśli chcę zafałszować problem zmiany monety przy użyciu rekursji, nie mogę opracować podejścia rekursywnego.

Czy istnieje jakiś szczególny sposób myślenia tak, aby wymyślić rekurencyjnej podejście? Czy istnieje obszerny tutorial algorytmów rekursywnych, który może mi pomóc rozwiązać bardziej zaawansowane problemy?

Odpowiedz

3

Przejrzyj Structure and Interpretation of Computer Programs book, który jest wysoce zalecany tutaj na Stack Overflow i jest swobodnie dostępny online. Używa języka programowania Scheme do nauczania podstawowych pojęć dotyczących programowania. Ponieważ Scheme jest funkcjonalnym językiem programowania, rekurencja jest szeroko stosowana wszędzie - nie tylko tam, gdzie używałbyś go nawet w imperatywnych językach programowania, takich jak C lub PHP, ale także tam, gdzie zwykle używasz konstrukcji pętli. Przykłady i problemy w książce przedstawiają rekurencję w jej naturalnym środowisku, jeśli tak, a nie przez zawiłe zmyślone scenariusze.

+0

Dziękuję. Na pewno przejrzę tę książkę :-) – PuppyHeadedNinja

+0

W rzeczywistości na stronie internetowej MIT znajduje się również pełna seria lekcji wideo: http://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6 -001-struktura-i-interpretacja-programów-komputerowych-wiosna-2005/wideo-wykłady/Są całkiem ciekawe :) – sergico