


Rekursives Programm zur Überprüfung, ob eine Zahl in C++ ein Palindrom ist
Wir erhalten eine Ganzzahl als Eingabe. Das Ziel besteht darin, mithilfe der Rekursion zu bestimmen, ob die Eingabezahl Num ein Palindrom ist.
Um zu überprüfen, ob eine Zahl ein Palindrom ist, kehren Sie die Zahl um und prüfen Sie, ob beide Zahlen gleich sind. Wenn die umgekehrte Zahl der ursprünglichen Zahl entspricht, handelt es sich um ein Palindrom.
Beispiel
Eingabe− Num = 34212;
Ausgabe− 34212 ist kein Palindrom!
Erklärung− Wenn wir 34212 umkehren, erhalten wir 21243. 34212 != 21243 Daher ist die eingegebene Zahl kein Palindrom.
Input− Num = 32123;
Output− 32123 ist ein Palindrom!
Erklärung - Wenn wir 32123 umkehren, erhalten wir 32132. 32123!= 32123, also ist die eingegebene Zahl ein Palindrom.
Die im folgenden Programm verwendete Methode ist wie folgt:
In dieser Methode verwenden wir die rekursive Funktion revrsNum(int num1, int num2), die die Eingabenummer num1 und die temporäre Nummer num2 akzeptiert.Für den Basisfall: Wenn Nummer1 0 ist, geben Sie Nummer2 zurück.
p>
Else-: Verwenden Sie die Rekursion, um die umgekehrte Reihenfolge von num1 zu berechnen. Gibt den Kehrwert der Berechnung zurück.
Wenn beide gleich sind, ist die eingegebene Zahl ein Palindrom.
-
Erhalten Sie die Eingabenummer Num.
Erhalten Sie die Eingabenummer Num. p>
Take Num2 = revrsNum(Num,0)
Die Funktion revrsNum(int num1, int num2) generiert rekursiv den Umkehrwert von num1 und gibt die umgekehrte Zahl zurück.
Wenn num1 0 ist, gibt das invertierte Berechnungsergebnis num2 zurück.
Andernfalls multiplizieren Sie num2 mit 10 und addieren Sie num1%10.
Reduzieren Sie num1 um 10 mit num1=num1/10.
Verwenden Sie revrsNum(recursive num1, num2);
, um das Ergebnis zurückzugeben.
Drucken Sie die erhaltenen Ergebnisse im Hauptmenü aus.
Beispiel
#include <bits/stdc++.h> using namespace std; int revrsNum(int num1, int num2){ if (num1 == 0){ return num2; } num2 *= 10; num2 += (num1 % 10); num1 = num1/10; return revrsNum(num1, num2); } int main(){ int Num = 1345431; int Num2 = revrsNum(Num,0); if (Num == Num2){ cout <<Num<<" is Palindrome!"; } else{ cout <<Num<<" is not a Palindrome!"; } return 0; }
Nach dem Login kopierenAusgabe
Wenn wir den obigen Code ausführen, wird die folgende Ausgabe generiert
1345431 is Palindrome!
Nach dem Login kopieren
Das obige ist der detaillierte Inhalt vonRekursives Programm zur Überprüfung, ob eine Zahl in C++ ein Palindrom ist. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Die Rekursionstiefe von C++-Funktionen ist begrenzt und das Überschreiten dieser Grenze führt zu einem Stapelüberlauffehler. Der Grenzwert variiert je nach System und Compiler, liegt aber meist zwischen 1.000 und 10.000. Zu den Lösungen gehören: 1. Tail-Rekursionsoptimierung; 2. Tail-Call;

Ja, C++-Lambda-Ausdrücke können die Rekursion mithilfe von std::function unterstützen: Verwenden Sie std::function, um einen Verweis auf einen Lambda-Ausdruck zu erfassen. Mit einer erfassten Referenz kann sich ein Lambda-Ausdruck rekursiv selbst aufrufen.

Der rekursive Algorithmus löst strukturierte Probleme durch den Selbstaufruf von Funktionen. Der Vorteil besteht darin, dass er einfach und leicht zu verstehen ist. Der Nachteil besteht jedoch darin, dass er weniger effizient ist und einen Stapelüberlauf verursachen kann Der Vorteil der Stapeldatenstruktur besteht darin, dass sie effizienter ist und einen Stapelüberlauf vermeidet. Der Nachteil besteht darin, dass der Code möglicherweise komplexer ist. Die Wahl zwischen rekursiv und nicht rekursiv hängt vom Problem und den spezifischen Einschränkungen der Implementierung ab.

Eine rekursive Funktion ist eine Technik, die sich selbst wiederholt aufruft, um ein Problem bei der Zeichenfolgenverarbeitung zu lösen. Es erfordert eine Beendigungsbedingung, um eine unendliche Rekursion zu verhindern. Rekursion wird häufig bei Operationen wie der String-Umkehr und der Palindromprüfung verwendet.

Rekursion ist eine leistungsstarke Technik, die es einer Funktion ermöglicht, sich selbst aufzurufen, um ein Problem zu lösen. In C++ besteht eine rekursive Funktion aus zwei Schlüsselelementen: dem Basisfall (der bestimmt, wann die Rekursion stoppt) und dem rekursiven Aufruf (der das Problem aufteilt). kleinere Teilprobleme). Indem Sie die Grundlagen verstehen und praktische Beispiele wie faktorielle Berechnungen, Fibonacci-Folgen und binäre Baumdurchläufe üben, können Sie Ihre rekursive Intuition entwickeln und sie sicher in Ihrem Code verwenden.

Tail Recursion Optimization (TRO) verbessert die Effizienz bestimmter rekursiver Aufrufe. Es wandelt endrekursive Aufrufe in Sprunganweisungen um und speichert den Kontextstatus in Registern statt auf dem Stapel, wodurch zusätzliche Aufrufe und Rückgabeoperationen an den Stapel entfallen und die Effizienz des Algorithmus verbessert wird. Mit TRO können wir tail-rekursive Funktionen (z. B. faktorielle Berechnungen) optimieren. Indem wir den tail-rekursiven Aufruf durch eine goto-Anweisung ersetzen, konvertiert der Compiler den goto-Sprung in TRO und optimiert die Ausführung des rekursiven Algorithmus.

Rekursion ist eine Technik, bei der sich eine Funktion selbst aufruft, aber die Nachteile eines Stapelüberlaufs und einer Ineffizienz aufweist. Zu den Alternativen gehören: Tail-Recursion-Optimierung, bei der der Compiler rekursive Aufrufe in Schleifen optimiert, die Schleifen anstelle von Rekursion und Coroutinen verwenden, die das Anhalten und Fortsetzen der Ausführung ermöglichen und so rekursives Verhalten simulieren.

Rekursive Definition und Optimierung: Rekursiv: Eine Funktion ruft sich intern auf, um schwierige Probleme zu lösen, die in kleinere Teilprobleme zerlegt werden können. Schwanzrekursion: Die Funktion führt alle Berechnungen durch, bevor sie einen rekursiven Aufruf durchführt, der in eine Schleife optimiert werden kann. Optimierungsbedingung für die Schwanzrekursion: Der rekursive Aufruf ist die letzte Operation. Die rekursiven Aufrufparameter sind dieselben wie die ursprünglichen Aufrufparameter. Praktisches Beispiel: Fakultät berechnen: Die Hilfsfunktion Factorial_helper implementiert die Schwanzrekursionsoptimierung, eliminiert den Aufrufstapel und verbessert die Effizienz. Fibonacci-Zahlen berechnen: Die Schwanzrekursivfunktion fibonacci_helper nutzt die Optimierung, um Fibonacci-Zahlen effizient zu berechnen.
