Heim > Artikel > Backend-Entwicklung > Rekursive Funktion in C#
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.
Die Syntax hier ist dieselbe wie die grundlegende Funktionssyntax in C#. Werfen wir einen Blick hierher.
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.
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.
Ausgabe:
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:
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:
Was wäre, wenn wir Null als Eingabe angeben? Ja, einer würde zurückgegeben.
Ausgabe:
Was ist nun, wenn wir eine negative Zahl angeben?
Ausgabe:
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.
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.
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:
Wenn ich zum Beispiel num1 = 5 und num2 = 8 nehme, dann ist die Ausgabesumme, die wir erhalten, 5+6+7+8, also 26.
Ausgabe:
Und was wäre, wenn ich num1 weniger als num2 gebe?
Ausgabe:
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.
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!