Eine der besten Möglichkeiten, die Rekursion zu erlernen, besteht darin, Erfahrungen in einer funktionalen Programmiersprache wie Haskell, Lisp oder Scheme zu sammeln.
Die Suche nach rekursiven Problemen kann also auf die Suche nach einigen Problemen und Antworten im Zusammenhang mit funktionalen Programmiersprachen reduziert werden. Hier ist ein Beispiel 99 Lisp-Probleme .
Es dauert wirklich nur 5 Minuten, Scheme oder Lisp zu lernen, so dass Sie sofort mit Beispielen für den von Ihnen erwähnten Test morgen beginnen können.
Eine weitere gute Möglichkeit, die Rekursion zu erlernen, besteht darin, sich in mathematischen Beweisen zu üben, die Induktion beinhalten.
Schlüsselbegriffe der Rekursion:
Bei der Rekursion muss man nicht wissen, wie das Problem zu lösen ist. Man muss nur 2 Dinge wissen. 1) wie man die kleinste Instanz des Problems löst, und 2) wie man es in kleinere Teile zerlegt.
Das heißt, Sie müssen sich nur vor Augen halten, dass Sie Folgendes brauchen: 1) einen Basisfall und 2) einen rekursiven Fall.
Der Basisfall behandelt eine einzige Instanz dessen, was Sie mit der kleinsten Eingabe machen wollen.
Der rekursive Fall zerlegt das Problem in ein Teilproblem. Schließlich wird dieses Teilproblem auf den Basisfall reduziert.
Ejemplo:
//1+...+n = n*n(+1)/2 = sumAll(n):
int sumAll(int x)
{
if(x == 0) //base case
return 0;
else
return sumAll(x-1) + x; //recursive case
}
Es ist wichtig zu verstehen, dass es nicht schwer ist, den Basisfall herauszufinden. Er muss einfach nur existieren. Hier ist eine äquivalente Lösung für x> 0:
//1+...+n = n*n(+1)/2 = sumAll(n):
int sumAll(int x)
{
if(x == 1) //base case
return 1;
else
return sumAll(x-1) + x; //recursive case
}