Heim >Backend-Entwicklung >C++ >Rekursionsübungsprobleme und Lösungen
In diesem Artikel besprechen wir einige Probleme der Rekursionspraxis und ihre detaillierten Lösungen.
Lassen Sie uns zunächst verstehen, was Rekursion ist und wie sie funktioniert:
Rekursion – Rekursion ist eine Programmiertechnik, bei der sich eine Funktion oder Methode mehrmals selbst aufruft, um ein Problem zu lösen. Diese Funktion zerlegt das Problem in kleinere Teilprobleme und löst diese, bis der Basisfall erreicht ist.
Der Basisfall ist eine Stoppbedingung, die sicherstellt, dass die Funktion den Selbstaufruf stoppt und das Ergebnis innerhalb einer begrenzten Zeit zurückgibt.
Rekursion ist eine leistungsstarke Technik zur Lösung komplexer Probleme. Es ist jedoch wichtig, sie sorgfältig zu entwerfen, um Endlosschleifen zu vermeiden und sicherzustellen, dass die Funktion korrekt beendet wird, wenn eine Funktion mehrmals rekursiv aufgerufen wird.
Dies ist die grundlegendste Frage im Zusammenhang mit der Rekursion.
Finden Sie die Fakultät einer bestimmten Zahl mithilfe des Konzepts der Fakultät.
#include <bits/stdc++.h> using namespace std; // recursive function to // calculate factorial of number int Numberfact(int number) { // base condition if(number == 1) { return 1; } else { return number * Numberfact(number-1); } } // main code int main() { int number = 5; cout<< " The factorial of 5 is " << Numberfact(number); return 0; }
The factorial of 5 is 120
In diesem Problem müssen wir die n-te Zahl in der Folge beginnend bei 1 drucken, wobei die i-te Zahl die Summe ihrer beiden vorherigen Zahlen ist, allgemein bekannt als Fibonacci-Folge.
#include <bits/stdc++.h> using namespace std; // function to // calculate nth number of // Fibonacci series int Numberfib(int number) { // base condition if(number <= 1) { return number; } else { return Numberfib(number-1)+Numberfib(number-2); } } // main code int main() { int number = 9; cout<< " The 9th number of the Fibonacci series is " << Numberfib(number); return 0; }
The 9th number of the Fibonacci series is 34
Berechnen Sie die Ziffernsumme einer bestimmten Zahl
#include <bits/stdc++.h> using namespace std; // recursive method to // calculate sum of digits int Sumofdigits(int number) { // base case if(number <=10) { return number; } else { return number%10 + Sumofdigits( number/10 ); } } // main code int main() { int number = 563; cout<< " The sum of digits of the number " << number << " is "<< Sumofdigits(number); return 0; }
The sum of digits of the number 563 is 14
Berechnen Sie den „Potenz“-Wert einer Zahl.
In dieser Frage werden uns zwei Zahlen „Zahl“ und „Potenz“ gegeben, und unsere Aufgabe besteht darin, die Potenz „Potenz“ der Zahl „Zahl“ zu ermitteln.
#include <bits/stdc++.h> using namespace std; // recursive method to // generate the nth power // of a given number int powerofx( int nums , int pow) { // termination condition if(pow == 0) { return 1; } else { return nums*powerofx(nums, pow-1); } } // main code int main() { int nums = 2; int pow =6; cout<< " The number " << nums << " To the power "<< pow <<" is "<< powerofx(nums, pow); return 0; }
The number 2 To the power 6 is 64
Finden Sie den GCD (größten gemeinsamen Teiler) zweier Zahlen.
GCD steht für „Größter gemeinsamer Teiler“ und ist die größte Zahl, durch die zwei oder mehr Zahlen ohne Rest geteilt werden können. Er wird auch als höchster gemeinsamer Faktor (HCF) dieser Zahlen bezeichnet.
Angenommen, wir haben zwei verschiedene Zahlen: 14 und 28.
Die Faktoren von 14 sind 1, 2, 7 und 14.
Die Faktoren von 28 sind 1, 2, 4, 7, 14 und 28.
Wir können dann die gemeinsamen Faktoren dieser beiden Zahlen ermitteln, nämlich 1, 2, 7 und 14. Die größte Zahl, die sowohl 14 als auch 28 teilen kann, ohne einen Rest zu hinterlassen, ist 14, daher ist der größte gemeinsame Teiler von 14 und 28 14.
#include <bits/stdc++.h> using namespace std; // function to recursively // calculate the gcd int greatestcommondivisor(int num1, int num2) { if (num2 == 0) { return num1; } else { return greatestcommondivisor(num2, num1 % num2); } } // main code int main() { int num1 = 36; int num2 =60; cout<< " The Greatest common divisor of " << num1 << " and "<< num2<<" is "<< greatestcommondivisor(num1, num2); return 0; }
The Greatest common divisor of 36 and 60 is 12
Array in umgekehrter Reihenfolge drucken
Wir erhalten ein Array mit n ganzen Zahlen und unsere Aufgabe besteht darin, dasselbe Array der Reihe nach auszudrucken, wobei die erste Zahl die letzte Zahl ist, die zweite Zahl die vorletzte Zahl und so weiter.
#include <bits/stdc++.h> using namespace std; // recursive function to // =reverse print the given array void reverseprint(int nums[], int begining, int end) { if (begining >= end) { return ; } else { cout << nums[end-1] << " "; reverseprint(nums, begining, end - 1); } } // main code int main() { int size =4; int nums[] = { 2, 3, 4, 5 } ; cout<< " the given array is reverse order is " << endl ; reverseprint(nums, 0, size); return 0; }
the given array is reverse order is 5 4 3 2
Hier sind einige weitere grundlegende Übungsfragen, um eine grundlegende Ebene der Rekursion zu beherrschen -
Schreiben Sie eine Funktion, um rekursiv zu prüfen, ob eine Zeichenfolge ein Palindrom ist.
Schreiben Sie eine Funktion mit Schwanzrekursion, um die Fakultät einer bestimmten Zahl zu ermitteln.
Schreiben Sie eine Funktion, um das Problem des Turms von Hanoi zu lösen.
Schreiben Sie eine Funktion, um eine binäre Suche in einem sortierten Array durchzuführen.
Das obige ist der detaillierte Inhalt vonRekursionsübungsprobleme und Lösungen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!