Das Verfahren oder die Funktion kann eine interne Herausforderung für ein anderes Verfahren enthalten. Unter anderem kann sich das Unterprogramm nennen. In diesem Fall ist es dem Computer egal. Er ist auch, wie immer, oben unten, die Teams, die er traf.

Wenn Sie sich an Mathe erinnern, können Sie sich dort treffen.Mathematische Induktionsprinzip♪ Es ist:

für jede natürliche Aussagenwenn
ANHANG Gut genug= 1und
2. Aus der Fairness des Anspruchs auf eine willkürliche Natur = ksollte ihm fair sein.n = k+1.

Es nennt sich ein Programm. Wahrnehmung

Рекурсия - это способ определения множества объектов через само это множество на основе заданных простых базовых случаев.


Рекурсивной же будет называться процедура (функция), которая вызывает саму себя напрямую или через другие процедуры и функции
Fallstudie:
void Rec(int a)
{
  if (a>0) Rec(a-1);
  cout << a;
}
Die schematische Arbeit des Wettbewerbs kann durch ein Bündel gekennzeichnet sein.

Rec() wird mit Parameter ausgeführt 3. Dann wird innerhalb des Verfahrens mit dem Parameter 3 die Prozedur mit dem Parameter 2 etc. aufgerufen, bis die Prozedur mit dem Parameter 0 herausgefordert wird. Bei einer Null-Responsive-Herausforderung steht das Null-Punkt-Verfahren nicht mehr zur Verfügung und es wird abgeschlossen. Die Steuerung wird dann mit dem Parameter 1 wieder auf das Verfahren übertragen, und sie beendet auch ihre Arbeit durch Drucknummer 1 usw. vor dem Verfahren mit dem Parameter 3.

Alle Verfahren, die gestellt wurden, werden im Auge behalten, bis ihre Arbeit beendet ist. Anzahl der gleichzeitigen Verfahren глубиной рекурсии

Wiederkehrend. Zyklussimulation
Wir haben gesehen, dass der Klassenraum eine Wiederholung der Teams im Unterprogramm ist. Dies ist wiederum dasselbe wie der Zyklus. Es gibt Programmiersprachen, in denen der Zyklus überhaupt nicht konzipiert ist, wie der Prolog.
Versuchen wir, den Zyklus zu simulieren. for

Zyklus for enthält eine Variablenzahl. Im wiederkehrenden Teilprogramm kann diese Variable als Parameter übertragen werden.
/ LoopImitation() Verfahren mit zwei Parametern.
/ Der erste ist ein Schrittzähler, der zweite Parameter ist die Gesamtzahl der Schritte.
Leere LoopImitation(int i, int n)
{~}
cout-Leitband &quot;Hello N &quot; / Operator zu wiederholen auf jedem Wert i
wenn (i Eisenbahn n) / bis der Zykluszähler gleich n ist,
{ // rufen Sie eine neue Kopie des Verfahrens mit i+1 an (Übertragung auf den nächsten Wert (i).
LoopImitation(i + 1, n);
♪
♪ 

Wiederkehrende und Irration
Um die Ansicht zu verstehen, müssen wir die Ansicht verstehen. ♪
ИтерацияProgrammierung . - Ja. ein Schritt zyklische Datenverarbeitung.
Häufig verwenden die literarischen Algorithmen der aktuellen Schritte das Ergebnis der gleichen Operation oder Operation, wie zuvor berechnet. Ein Beispiel für solche Berechnungen ist die Berechnung von Wettbewerbsverhältnissen.
Das einfache Beispiel des durch die Verwendung von Maisverhältnissen berechneten Wertes ist: - Ja.
Berechnung des Wertes an jedem Schritt (Berechnung) ist - Ja. Bei der Berechnung des Wertes - Ja., wir nehmen die Sache, die bereits erhalten ist.- Ja.

Die Zahl kann auch mit Hilfe beschrieben werden рекуррентной формулы:
Es tut mir leid.

Es sei darauf hingewiesen, dass diese Beschreibung nur eine wiederkehrende Funktion ist.
Das ist die erste Linie.- Ja.() ist der Basisfall (Bedingungszustand) und die zweite Zeile ist der Übergang zum nächsten Schritt.
Wiederkehrende FactoringfunktionIteration Algorithmus
int Factorial(int n)
{~}
wenn
Rückgabe n * Factorial(n-1);
die Rückgabe 1;
♪
x = 1;
für (i = 2; i À= n; i+++)
x = x * i;
cout vielseitig x;

Es ist zu verstehen, dass die Herausforderung der Funktionen zusätzliche Overhead-Kosten mit sich bringt, so dass die nicht-curriculare Berechnung etwas schneller wäre.

Fazit:
Wo Sie ein Programm mit einem einfachen heterogenen Algorithmus ohne Vorlesung schreiben können, müssen Sie ohne Vorlesung schreiben. Aber es gibt eine große Klasse von Aufgaben, bei denen der Rechenvorgang nur durch das Feld durchgeführt wird.
Andererseits werden die wiederkehrenden Algorithmen am häufigsten verstanden.

Ziel
In der Alphabetsprache des Stammes Tumba-Umba waren vier Buchstaben „K“, „L“, „M“ und „N“. Wir müssen alle Wörter setzen, die den Bildschirm bilden. n Die Buchstaben, die aus diesem Alphabet gebaut werden können.

Die Herausforderung ist eine normale Herausforderung zu überwinden, die reduziert werden kann.
Wir setzen die Briefe direkt auf das Wort.
Beim ersten Eintrag kann eine der vier Buchstaben des Alphabets eingefügt werden (K. L, M, N).
Zuerst den Brief. K♪ Dann erhalten Sie alle Optionen mit dem ersten Brief. K, wir müssen alle möglichen Kombinationen von Buchstaben auf dem Rest überqueren n - 1 (siehe Abbildung).
Die Herausforderung besteht also darin, vier langfristige Ziele zu erreichen. n - 1
Wiederkehrende Umwandlung von n Symbolen
w[0]='K'; // Schott der letzten L-1 Symbole
w[0]='L '
w[0]='M'; // Schott der letzten L-1 Symbole
w[0]='N '
w - eine symbolische Linie, in der das Arbeitswort gespeichert ist.
Also haben wir es. Ich weiß nicht.Die Aufgabe kann durch einen Prozess des Lernens angesprochen werden.
Müssen wir feststellen, wann der Wettbewerb vorbei ist? Wenn alle Symbole angezeigt werden, d.h. die Anzahl der installierten Symbole entspricht n♪ Dabei müssen wir das Wort auf dem Bildschirm bekommen und aus dem Verfahren herauskommen.

Das C+++-Programm wird wie folgt aussehen.
#include Pipelineiostream-Komponente
mit Namespace std;
Leere TumbaWords( String A, String &quo;w, int N )
/ w = Variable (schreit)
/ Das TumbaWords-Verfahren wird in Form einer symbolischen Linie auf das Alphabet übertragen,
/ Wort und Anzahl der bereits installierten Symbole (am Anfang 0).
{~}
int i;
wenn (N == sync, korrigiert von elderman == @elder_man)
{~}
/ Sind alle Symbole bereits eingefügt worden,
/ muss die Linie abgrenzen und das Verfahren abschließen
cout verbale Besessenheit;
zurück;
♪

für (i = 1; i À.size(); i ++ )
{~}
/ Wenn die Bedingung falsch ist (d.h. nicht alle Symbole angezeigt werden,
/ Wir bewegen alle Alphabetsymbole im Zyklus.
// abwechselnd das Symbol auf den ersten freien Platz setzen
w[N] = A[i]
TumbaWords (A, w, N+1);
♪
♪

Haupt(e)
{~}
int n;
Stringwort;
int n;
cin ventri;
word.resize(n); // die Zeile auf n Größe erhöhen
TumbaWords (KLMN, Wort, 0 );
♪
BILDUNGder Parameter w - Geänderter Parameter (Ausbau)!