Heim  >  Artikel  >  Backend-Entwicklung  >  Rekursionsübungsprobleme und Lösungen

Rekursionsübungsprobleme und Lösungen

PHPz
PHPznach vorne
2023-09-15 10:05:08772Durchsuche

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.

Frage 1

Dies ist die grundlegendste Frage im Zusammenhang mit der Rekursion.

Finden Sie die Fakultät einer bestimmten Zahl mithilfe des Konzepts der Fakultät.

Implementierung in C++

#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;
}

Ausgabe

The factorial of 5 is 120

Frage 2

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.

Implementierung in C++

#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;
}

Ausgabe

The 9th number of the Fibonacci series is 34

Frage 3

Berechnen Sie die Ziffernsumme einer bestimmten Zahl

Implementierung in C++

#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;
}

Ausgabe

The sum of digits of the number 563 is 14

Frage 4

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.

Implementierung in C++

#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;
}

Ausgabe

The number 2 To the power 6 is 64

Frage 5

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.

Implementierung in C++

#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;
}

Ausgabe

The Greatest common divisor of 36 and 60 is 12

Frage 6

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.

Implementierung in C++

#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;
}

Ausgabe

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:tutorialspoint.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen