Aby zrozumieć zaawansowane algorytmy, takie jak chciwe metody i dynamiczne programowanie, najpierw trzeba dobrze znać rekursję.Jak myśleć w sposób rekurencyjny?
Jestem stosunkowo nowy w rekursji. Ilekroć zadawane jest pytanie, pierwsze rzeczy, które pojawiają się w umyśle, to rozwiązania wykorzystujące iteracje. Chociaż wiem, co oznaczają metody rekursywne i jak to działa, bardzo trudno jest myśleć w sposób rekursywny.
Proszę pomóc odpowiadając na poniższe pytania:
1) może być dowolny sposób iteracyjny zastąpione przez rekursji i vice versa?
Na przykład, jak drukować elementy w tablicy o rozmiarze n rekursywnie?
for i 0 to n
Print a[i]
2) Jak rozwiązać problem rekurencyjnie? Jakie są kroki? Czy są jakieś wskazówki, aby zidentyfikować, że problemy można rozwiązać rekurencyjnie?
Dla ex: Jeśli jestem pytany, aby wydrukować wszystkie sznurki Sub ciąg
INPUT: CAT
OUTPUT: CAT,CA,A,AT,T
mogę wymyślić iteracyjny sposób fast.Using dwie pętle może rozwiązać ten problem.
Rekursywnie, jak go rozwiązać. Jak zidentyfikować, że problemy można rozwiązać rekursywnie.
Jeśli odpowiedź na moje pierwsze pytanie brzmi "tak", użycie dwóch rekursji zamiast iteracji może być rozwiązaniem mojego problemu?
3) Czy ktoś może zaproponować mi jakieś materiały/zasoby, aby dokładnie zrozumieć koncepcję rekurencji?
Masz worek listów i ulicę domów. Czy mówisz "dla każdego domu, sprawdź litery na górze stosu i dostarcz, a następnie przejdź do następnego domu" lub powiedz: "dostarcz pierwszy zestaw listów do pierwszego domu na ulicy, usuń ten dom z ulicy, i powtarzaj, aż na ulicy nie ma domów "? –