OK, pokud jde o to, "jak tu rekurzi sestavit":
Rekurzivní řešení často spočívá v tom, že daný problém rozdělíme na dva menší podproblémy, vyřešíme ty a následně jejich výsledky spojíme tak, aby tvořila řešení původního problému. Každý podproblém se přitom stane novým problémem, který řešíme obdobně. Dříve nebo později se dostaneme do situace, kdy ten podproblém už je triviálně řešitelný.
"Sestavení rekurze" spočívá v tom, že musíme vymyslet, jak problém rozdělit na ty menší podproblémy, jak určit, že podproblém už je triviálně řešitelný, a jak dosažená řešení podproblémů sloučit do řešení problému. Jak se to naučit nevím, asi nejspíš praxí. Ale většinou to je dost intuitivní.
Mergesort:
Hanojské věže:
Faktoriál: (tradiční příklad na rekurzi, ale implementačně naprosto nevhodný)
Prohledávání stromu do hloubky:
Atd.
2 | No.2 Revision |
OK, pokud jde o to, "jak tu rekurzi sestavit":
Rekurzivní řešení často spočívá v tom, že daný problém rozdělíme na dva (dva) menší podproblémy, vyřešíme ty a následně jejich výsledky spojíme tak, aby tvořila tvořily řešení původního problému. Každý podproblém se přitom stane novým problémem, který řešíme obdobně. Dříve nebo později se dostaneme do situace, kdy ten podproblém už je triviálně řešitelný.
"Sestavení rekurze" spočívá v tom, že musíme vymyslet, jak problém rozdělit na ty menší podproblémy, jak určit, že podproblém už je triviálně řešitelný, a jak dosažená řešení podproblémů sloučit do řešení problému. Jak se to naučit nevím, asi nejspíš praxí. Ale většinou to je dost intuitivní.
Mergesort:
Hanojské věže:
Faktoriál: (tradiční příklad na rekurzi, ale implementačně naprosto nevhodný)
Prohledávání stromu do hloubky:
Atd.