Mit welcher Methode kann die rekursive Funktion der C-Sprache verwendet werden, um das Problem 5 zu lösen?

Mit welcher Methode kann die rekursive Funktion der C-Sprache verwendet werden, um das Problem 5 zu lösen?

In der C-Programmierung ist Rekursion eine sehr nützliche Technik, die die Problemlösung vereinfacht und die Wiederverwendbarkeit von Code verbessert. In diesem Artikel wird das Lösen von Nummer 5 als Beispiel verwendet, um vorzustellen, wie rekursive Funktionen der C-Sprache verwendet werden, um diese Aufgabe zu lösen.

9. Wie kann die rekursive Funktion der C-Sprache verwendet werden, um das Problem 5 zu lösen?

Lassen Sie uns zunächst das Problem klar definieren. Die Methode zur Lösung der Zahl 5 besteht darin, den Ausdruck der Zahl 5 in einer gegebenen Zahlenmenge durch die Kombination von Addition, Subtraktion, Multiplikation, Division und Klammern zu erhalten. Beispielsweise kann aus der Zahlenmenge {1, 2, 3, 4} die Zahl 5 durch den folgenden Ausdruck erhalten werden: 2 + 3 = 5.

Um dieses Problem zu lösen, müssen wir zunächst eine rekursive Funktion definieren, die alle Ausdrücke zurückgibt, die die Bedingung erfüllen, basierend auf einer gegebenen Menge von Zahlen und einer Zielzahl.

voidsolve(int* nums, int n, int target, char* expr, int sum, int last, int index) {

if (index == n) { // rekursive Beendigungsbedingung

if (sum == target) {

printf(\s\

\ausdruck);

}

zurückkehren;

}

// Addition: Addiere die aktuelle Zahl zum Ausdruck

int len ​​= strlen(expr);

expr[len] = '+';

expr[len + 1] = '0' + nums[index];

expr[len + 2] = '\0';

lösen(nums, n, target, expr, sum + nums[index], nums[index], index + 1);

expr[len] = '\0';

// Subtraktion: Subtrahiere die aktuelle Zahl vom Ausdruck

len = strlen(expr);

expr[len] = '-';

expr[len + 1] = '0' + nums[index];

expr[len + 2] = '\0';

lösen(nums, n, target, expr, sum - nums[index], -nums[index], index + 1);

expr[len] = '\0';

// Multiplikation: Multiplizieren Sie die aktuelle Zahl mit dem Ausdruck

len = strlen(expr);

expr[len] = '*';

expr[len + 1] = '0' + nums[index];

expr[len + 2] = '\0';

lösen(nums, n, target, expr, sum - last + last * nums[index], last * nums[index], index + 1);

expr[len] = '\0';

// Division: Teilen Sie die aktuelle Zahl durch den Ausdruck

len = strlen(expr);

expr[len] = '/';

expr[len + 1] = '0' + nums[index];

expr[len + 2] = '\0';

Solve(nums, n, target, expr, sum - last + last / nums[index], last / nums[index], index + 1);

expr[len] = '\0';

//Aktuelle Nummer nicht verwenden

lösen(nums, n, target, expr, sum - last, last, index + 1);

}

Das Obige ist die Implementierung einer rekursiven Funktion. Zu ihren Eingabeparametern gehören die Zahlenmenge nums, die Anzahl der Zahlen in der Menge n, das Zielzahlenziel, der aktuelle Ausdruck expr, die aktuelle Zahl und Summe, die vorherige Zahl zuletzt und der Index der aktuellen Nummer.

In einer rekursiven Funktion prüfen wir zunächst die Rekursionsbeendigungsbedingung, d. h. ob die Summe des Ausdrucks gleich der Zielzahl ist, wenn alle Zahlen berücksichtigt wurden. Wenn ja, drucken wir den Ausdruck aus.

Als nächstes addieren wir die aktuelle Zahl zum Ausdruck mithilfe der Additions-, Subtraktions-, Multiplikations- und Divisionsoperatoren und aktualisieren die Summe des Ausdrucks, der vorherigen Zahl und des Index der aktuellen Zahl, indem wir die Funktion der nächsten Ebene rekursiv aufrufen.

Schließlich müssen wir auch den Fall behandeln, in dem die aktuelle Nummer nicht verwendet wird, und den Index der aktuellen Nummer aktualisieren, indem wir die Funktion rekursiv aufrufen.

Im Hauptprogramm definieren wir eine Zahlenmenge {1, 2, 3, 4} und rufen die rekursive Funktion auf, um das Problem der Lösung der Zahl 5 zu lösen.

int main() {

int nums[] = {1, 2, 3, 4};

int n = sizeof(nums) / sizeof(nums[0]);

int Ziel = 5;

char expr[50];

lösen(nums, n, target, expr, 0, 0, 0);

0 zurückgeben;

}

Durch Ausführen des obigen Programms erhalten wir alle Ausdrücke, die die Bedingungen erfüllen, d. h. durch die Kombination von Addition, Subtraktion, Multiplikation, Division und Klammern erhalten wir den Ausdruck der Zahl 5.

Anhand des obigen Codes und der Beispiele können wir die Methode zur Verwendung rekursiver Funktionen der C-Sprache zur Lösung des Problems von 5 klar verstehen. Rekursive Funktionen bewältigen unterschiedliche Situationen, indem sie sich ständig selbst aufrufen, um eine Lösung für das Problem zu finden. Dieser Ansatz vereinfacht nicht nur den Problemlösungsprozess, sondern verbessert auch die Wiederverwendbarkeit des Codes. Um Probleme mit anderen Nummern zu lösen, müssen Sie lediglich den Nummernsatz und die Zielnummer ändern.

Zusammenfassend lässt sich sagen, dass wir mithilfe der rekursiven Funktionen der C-Sprache verschiedene komplexe Probleme bequemer lösen und die Lesbarkeit und Wartbarkeit des Codes verbessern können. Die Beherrschung der rekursiven Technologie wird unserer Entwicklung der C-Sprachprogrammierung mehr Möglichkeiten eröffnen.
Ein Teil des Codes wird übertragen von: https://www.wodianping.com/c/2023-08/254369.html

Ich denke du magst

Origin blog.csdn.net/qq_42151074/article/details/132270751
Empfohlen
Rangfolge