Heim  >  Artikel  >  Backend-Entwicklung  >  Rekursive Funktion in C#

Rekursive Funktion in C#

WBOY
WBOYOriginal
2024-09-03 15:14:33475Durchsuche

In der rekursiven Funktion in C# bedeutet „Rekursion“ die gleiche Bedeutung wie in der englischen Sprache, genau bekannt als „sich wiederholen“. Die rekursive Natur einer Funktion bedeutet also, dass dieselbe Arbeit wiederholt ausgeführt wird. Und ja, wenn das Programm nicht richtig gehandhabt wird, würde es definitiv in einer Endlosschleife laufen. Wir müssen sicherstellen, dass wir bei der Ausführung dieser rekursiven Funktionen die richtigen Bedingungen angeben, sonst würde sich die Funktion immer wieder selbst aufrufen, was zu einer kontinuierlichen Ausführung des Programms führen würde. Sehen wir uns nun an, wie wir diese Funktionen in C# erstellen können.

Syntax rekursiver Funktionen in C#

Die Syntax hier ist dieselbe wie die grundlegende Funktionssyntax in C#. Werfen wir einen Blick hierher.

Rekursive Funktion in C#

Hier gibt es keine spezielle Syntax, aber wir können beobachten, dass eine Funktion sich selbst aufruft, um das Rückgabeergebnis bereitzustellen. Und wir müssen bei der Übergabe dieser Parameterwerte an diese rekursive Funktion sehr vorsichtig sein, da wir offensichtlich keinen laufenden Code wollen, der nicht stoppt.

In der obigen Syntax gibt es nichts Vergleichbares, wir müssen die Funktion nur in Return-Anweisungen aufrufen. Vielmehr können wir den Rückgabewert einer rekursiven Funktion sogar einer Variablen zuweisen und diese Variable ebenfalls zurückgeben.

Ausführung der Faktorisierung

Hier nehmen wir unsere Standardproblemstellung, Faktorisierung, zur Generierung unserer rekursiven Funktion.

Code:

using System;
class First {
static void Main() {
int result;
result = fact(7);
Console.WriteLine("Factorial is : " + result);
}
public static int fact(int num)
{
if(num==0)
{
return 1;
}
return num*fact(num-1);
}
}

Lassen Sie uns einen Blick auf den Schritt-für-Schritt-Prozess werfen.

  1. Zuerst haben wir unsere eigene parametrisierte Funktion erstellt, um einen Eingabewert von der Hauptfunktion zu übernehmen, für den wir die Fakultät berechnen möchten.
  2. Dann haben wir eine if-Bedingung erstellt, um zu prüfen, ob die angegebene Zahl Null ist. Wenn die Zahl Null ist, geben wir 1 als Standardwert zurück.
  3. Sonst multiplizieren wir die aktuelle Zahl mit der Funktion, die die Zahl minus 1 als Parameter übernimmt.
  4. Diese Multiplikation wiederholt sich also, bis wir die Zahl 0 erreichen. Da wir standardmäßig unsere Rückgabeausgabe für Null als 1 geschrieben haben, würde das Endergebnis mit 1 multipliziert.

Ausgabe:

Rekursive Funktion in C#

Jetzt werde ich im Code unseren Funktionsparameter von num minus 1 durch num ersetzen.  In diesem Fall würde sich die Funktion immer wieder selbst aufrufen und der Vorgang würde sich wiederholen.

Code:

using System;
class First {
static void Main() {
int result;
result = fact(7);
Console.WriteLine("Factorial is : " + result);
}
public static int fact(int num)
{
if(num==0)
{
return 1;
}
return num*fact(num);
}
}

Ausgabe:

Rekursive Funktion in C#

Anhand der obigen Ausgabe können wir deutlich die Stapelüberlaufausnahme erkennen, bei der sich die Funktion wiederholt selbst aufruft. Nur der hervorgehobene Teil wird gegenüber dem ersten Programm geändert.

Auf die gleiche Weise können wir die Zahl wie folgt als vom Benutzer eingegebenen Wert erstellen:

Code:

using System;
class First {
static void Main() {
int result,c;
string a;
Console.Write("Enter value for number :");
a = Console.ReadLine();
c = Convert.ToInt32(a);
result = fact(c);
Console.WriteLine("Factorial is : " + result);
}
public static int fact(int num)
{
if(num==0)
{
return 1;
}
return num*fact(num-1);
}
}

Ausgabe:

Rekursive Funktion in C#

Was wäre, wenn wir Null als Eingabe angeben? Ja, einer würde zurückgegeben.

Ausgabe:

Rekursive Funktion in C#

Was ist nun, wenn wir eine negative Zahl angeben?

Ausgabe:

Rekursive Funktion in C#

Dies führte auch zu einer Stapelüberlaufausnahme, da unsere faktorielle Rekursionsfunktion den Wert des Parameters bei jeder Ausführung verringert. Die negativen Zahlen würden also auf -6, -7, -8 usw. reduziert. Aus diesem Grund gehen wir von dieser Ausnahme aus.

Können Sie als Übung versuchen, eine rekursive Funktion für negative Zahlen zu erstellen?

Hinweis:Wir können eine Vorbedingung einer Zahl kleiner als Null nehmen und eins zu unserem rekursiven Funktionsparameter hinzufügen, bis Null kommt.

Beispiele für rekursive Funktionen in C#

Es gibt einige gute Beispiele, die in Bezug auf die rekursiven Funktionen angeführt werden können:

Wir haben noch einige andere Stellen, an denen wir diese rekursiven Funktionen verwenden können.

  • Drucken Sie kontinuierlich Zahlen von einem bestimmten Startpunkt und Endpunkt aus. (Programm unten)
  • Fügen Sie Zahlen ab einem bestimmten Startpunkt hinzu und hören Sie am Endpunkt auf oder wenn eine bestimmte Summe erreicht ist.
  • Zahlen drucken, die durch eine bestimmte Zahl in einem bestimmten Bereich geteilt werden.
  • Wir möchten nach dem Schreiben eines Satzes eine beliebige Anzahl fortlaufender Linien oder Punkte ausdrucken und vieles mehr.

Wie Sie sehen können, ähnelt eine rekursive Funktion der Funktionalität einer Schleife, wobei wir jedoch dieselbe Funktion wiederholt aufrufen.

Lassen Sie uns sehen, wie wir eine rekursive Funktion schreiben können, indem wir kontinuierlich Zahlen addieren, bis das Programm die zweite Zahl findet, die als Eingabe angegeben wird.

Code:

using System;
class First {
static void Main() {
int result,c,d;
string a,b;
Console.Write("Enter value for 1st number :");
a = Console.ReadLine();
c = Convert.ToInt32(a);
Console.Write("Enter value for 2nd number :");
b = Console.ReadLine();
d = Convert.ToInt32(b);
result = add(c,d);
Console.WriteLine("Add is : " + result);
}
public static int add(int num1,int num2)
{
int sum ;
sum=num1;
if (num1 < num2 )
{
num1++;
sum=sum+add(num1,num2);
return sum;
}
return sum;
}
}

Hier haben wir Folgendes getan:

  • Wir haben durch Benutzereingaben zwei Zahlen num1 und num2 übernommen
  • Add-Funktion, fügt die Zahlen beginnend bei Num1 hinzu, bis Num2 erreicht ist.

Wenn ich zum Beispiel num1 = 5 und num2 = 8 nehme, dann ist die Ausgabesumme, die wir erhalten, 5+6+7+8, also 26.

Ausgabe:

Rekursive Funktion in C#

Und was wäre, wenn ich num1 weniger als num2 gebe?

Ausgabe:

Rekursive Funktion in C#

Zuerst gibt es einige als num1-Wert, wir weisen den Summenwert dem num1-Wert zu und geben die Summe zurück, wenn die if-Anweisung nicht anwendbar ist.

Können Sie als Übung eine rekursive Funktion schreiben, um „Ich mag Programmieren“ auszugeben, bis eine bestimmte Bedingung erfüllt ist?

Hinweis:Wir können dem gleichen Verfahren zum Hinzufügen folgen, das im obigen Programm durchgeführt wird.

Fazit

Hier haben wir also die erfolgreiche Ausführung rekursiver Funktionen, den Aufruf dieser Funktionen und einige Beispiele dafür erhalten. Wir haben auch gelernt, wie ein einfacher Unterschied beim Aufruf einer Funktion dazu führen kann, dass das Programm seine Grenzen überschreitet und eine Ausnahme erzeugt.

Das obige ist der detaillierte Inhalt vonRekursive Funktion in C#. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:Mathematische Funktionen in C#Nächster Artikel:Mathematische Funktionen in C#