Cwiczenia na funkcje rekurencyjne

0

Gdzie mogę znaleźć jakieś zadanka związane z rekurencją?

0

aby wiedzieć jak działa rekursja musisz wiedzieć jak działa wywołanie i powrót funkcji z poziomu asemblera tzn: ramka stosu, zmienne lokalne na stosie, adres powrotu:
http://unixwiz.net/techtips/win32-callconv-asm.html
http://www.csee.umbc.edu/~chang/cs313.s02/stack.shtml

Jak to zrozumiesz to będziesz pisał programy rekurencyjne jakie ci się tylko podoba....

1

@Mały Lew - bzdura, nawet uczniowie szkół średnich potrafią korzystać z rekurencji, choć nie mają pojęcia o tym, co się dzieje pod spodem; Aby móc skorzystać z rekursji, wystarczy odpowiednio przemyśleć działanie kolejnych samowywołań - i tyle; Oczywiście wiedza na temat niskopoziomowych zabiegów nie zaszkodzi, jednak tak jak napisałem wyżej - nie jest to obowiązek;

@Pijany Szczur - nie musisz ich szukać; Na pewno nie raz używałeś już pętli, więc weź sobie każdy taki przypadek i wspomniane pętle zamień na rekursję; To na początek, potem możesz się pobawić trochę różnymi drzewami, do których obsługi rekurencja jest bardzo przydatna.

0
furious programming napisał(a):

@Pijany Szczur - nie musisz ich szukać; Na pewno nie raz używałeś już pętli, więc weź sobie każdy taki przypadek i wspomniane pętle zamień na rekursję; To na początek, potem możesz się pobawić trochę różnymi drzewami, do których obsługi rekurencja jest bardzo przydatna.

Zwykle kolejność jest odwrotna:

  • przyjemna i elegancka funkcja rekurencyjna
  • n > 1000, przepełnienie stosu lub dramatycznie wolne przetwarzanie (patrz np. Fibonacci)
  • konwersja do rekurencji ogonowej
  • nic nie daje? konwersja do iteracji (uwaga dla OP: przetwarzanie w pętli)

http://www.codeproject.com/Ar[...]ative-vs-Recursive-Approaches
http://www.refactoring.com/ca[...]ceRecursionWithIteration.html
https://secweb.cs.odu.edu/~ze[...]page/recursionConversion.html
https://web.archive.org/web/2[...]s%20and%20Recursion%20Lab.pdf
http://www.programcreek.com/2[...]eration-vs-recursion-in-java/
http://stackoverflow.com/ques[...]m-recursion-to-iteration?rq=1

Edit: jeszcze przydatna jest znajość techniki "memoization" (cache'owanie wyliczeń):
https://linanqiu.github.io/20[...]ecursion-Dynamic-Programming/
http://interactivepython.org/[...]rsion/DynamicProgramming.html

0

@vpiotr, ja nie opisałem cyklu produkcyjnego - podałem jedynie pomysł na zwiększenie wachlarza zadań.

1

Zrób drzewko plików danego katalogu (w sensie niech pokazuje wszystkie pliki i katalogi wgłąb). To realny problem, który można rozwiązać za pomocą rekurencji, a nie jakieś silnie.

0

A ja polecam puzzle logiczne np. Sudoku, Magiczny Kwadrat.

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0