Unterprogramme. Rekursion


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 so, als wäre er immer auf der Spitze und macht die Teams, die er traf.

Wenn Sie sich an Mathe erinnern, können Sie eine mathematische Induktion finden. Es ist wie folgt: einige Behauptung ist für alle natürlichen berechtigtnwenn
(1) Gut genug= 1;
(2) Aus der Fairness des Anspruchs auf eine willkürliche Natur = ksollte ihm fair sein.= k+1

In der Programmierung nennt man es einen Vortrag.

Recuring - es ist eine Möglichkeit, viele Objekte durch sich selbst viele auf der Grundlage einfacher Basis-Fälle zu definieren.

Recuring Es wird ein Verfahren (Funktion) genannt, das sich direkt oder durch andere Verfahren und Funktionen verursacht.
Fallstudie:

void Rec(int a)
{
  if (a>0) { Rec(a-1); }
  Console.WriteLine(a);
}

Schematische Rekursion kann aus einem Bündel gebildet werden.

Verfahren Rec()mit Parameter durchgefü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 Nullreaktion wird das 0-Punkt-Verfahren gedruckt und 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 im Feld

Wir haben gelernt, dass die Lektionen die Neubewertung der Teams im Unterprogramm sind. 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. für
Zyklus für enthält eine Variablenzahl. Im wiederkehrenden Teilprogramm kann diese Variable als Parameter übertragen werden.
/ Verfahren LoopImitation() mit zwei Parametern
// erster Parameter - Schrittzähler, zweiter Parameter - Gesamtzahl der Schritte
static void LoopImitation(int i, int n) 
{            	
  Console.WriteLine("Hello N " + i); // оператор, который необходимо повторить при любом значении i    	
  if (i < n)                         // пока счетчик цикла не станет равным значению n,   
  {                                  
    LoopImitation(i+1, n);           // вызываем новый экземпляр процедуры, с параметром i+1 (переход к следующему значению i)
  }      
}      

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
static int Factorial(int n){
	if (n > 1)
		return n * Factorial(n - 1);
	else return 1;
}
int x = 1;
for (int i = 2; i <= n; i++) 
  x = x * i;
Console.WriteLine("%d", 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.

Übersetzung der Nummer von einem System zum anderen

In einigen Fällen kann ein Wort in Verfahren verwendet werden return ohne Argument, das heißt, das Verfahren ist immer noch nichts zurück. Es könnte nützlich in einer Klasse sein, wennreturn verwendet wird, um die Abstufung in Basisfällen der Werte der Parameter, für die der Vorläufer geleitet wird, abzuschließen. Beispielsweise kann ein Verfahren, das die Zahl vom Dezimalpunkt zum Dual-Computing-System übersetzt, aussehen:
statischer Leerdruck Zwei(inn)
{~}
wenn (n) == sync, berichtigt von elderman == @elder_man
PrintTwo(n / 2);
wenn (n % 2 == sync, korrigiert von elderman == @elder_man
andere Console.Write(1);
♪

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 Programm in C# wird wie folgt aussehen.
/ 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)
statische Leerzeichen TumbaWords( String A, ref string w, int N )
{~}
wenn (N == sync, korrigiert von elderman == @elder_man
{~}
/ Sind alle Symbole bereits eingefügt worden,
/ muss die Linie abgrenzen und das Verfahren abschließen
Konsole.WriteLine(w)
zurück;
♪

für (int i = 0; i À w.Length; i ++ ) / wenn die Bedingung falsch ist (d.h. nicht alle Symbole angezeigt werden,
{~}
/ 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
= A[i]
TumbaWords(A, ref w, N+1);
w = w.Remove(w.Length - 1); / und nach Entfernen des letzten hinzugefügten Symbols,
/ um ein neues Wort mit demselben Präfix zu machen
♪
♪

statische Leere Main()
{~}
int n = Convert.ToInt32 (Console.ReadLine());
Stringwort = ";
TumbaWords("KLMN, ref word, 0);
♪

BILDUNGder Parameter w - Geänderter Parameter (Ausbau)!