Vor kurzem habe ich Rekursion studiert; wie man es schreibt, analysiert, usw. Ich habe für eine Weile gedacht, dass Wiederholung und Rekursion die gleiche Sache sind, aber einige Probleme bei den letzten Hausaufgaben und Quizfragen lassen mich denken, dass es kleine Unterschiede gibt, dass "Wiederholung" der Weg ist beschreiben ein rekursives Programm oder eine rekursive Funktion.Wie verwende ich Master-Theorem, um Rekursion zu beschreiben?
Das war mir bis vor kurzem sehr griechisch, als mir klar wurde, dass es etwas gibt, das als "Hauptsatz" bezeichnet wird, um die "Wiederholung" für Probleme oder Programme zu schreiben. Ich habe die Wikipedia-Seite durchgelesen, aber wie üblich sind die Dinge so formuliert, dass ich nicht wirklich verstehe, worüber sie spricht. Ich lerne viel besser mit Beispielen.
Also, ein paar Fragen: Lassen Sie uns sagen Sie diese Wiederholung gegeben:
r (n) = 2 * r (n-2) + r (n-1);
R (1) = r (2) = 1
Ist dies in der Tat in der Form des Master-Theorems? Wenn ja, in Worten, was sagt es? Wenn Sie versuchen würden, ein kleines Programm oder einen Baum der Rekursion basierend auf dieser Wiederholung zu schreiben, wie würde das aussehen? Sollte ich einfach versuchen, Zahlen zu ersetzen, ein Muster zu sehen, dann einen Pseudocode zu schreiben, der rekursiv dieses Muster erzeugen könnte, oder, da dies in Form des Hauptsatzes sein mag, gibt es einen einfacheren mathematischen Ansatz?
Nehmen wir an, Sie wurden gebeten, die Wiederholung T (n) für die Anzahl der Ergänzungen zu finden, die von dem aus der vorherigen Wiederholung erstellten Programm ausgeführt wurden. Ich kann sehen, dass der Basisfall wahrscheinlich T (1) = T (2) = 0 wäre, aber ich bin mir nicht sicher, wohin ich von dort aus gehen soll.
Grundsätzlich frage ich, wie man von einer gegebenen Wiederholung zu Code und umgekehrt geht. Da dies nach dem Hauptsatz aussieht, frage ich mich, ob es eine geradlinige und mathematische Methode gibt, dies zu tun.
EDIT: Okay, ich habe einige meiner früheren Aufgaben durchgesehen, um ein anderes Beispiel zu finden, wo ich gefragt werde, 'die Wiederholung zu finden', was der Teil dieser Frage ist mit.
Rezidive, die in der besten Art und Weise die Anzahl der Additionsoperationen im folgende Programmfragment beschreibt (wenn sie mit l == 1 und R genannt == n)
int example(A, int l, int r) {
if (l == r)
return 2;
return (A[l] + example(A, l+1, r);
}
Okay, das scheint ziemlich einfach zu sein. Ich bin mir auch nicht ganz sicher, was "Wiederholung" ist, aber mein Professor benutzt das Wort oft, und einige Fragen zum Praxistest fordern uns auf, ein Programm zu betrachten und es dann zu finden. Ich bearbeite meine Frage mit einem anderen Beispiel. –