Heim > Backend-Entwicklung > C++ > Hauptteil

Rekursive Implementierung von C++-Funktionen: Was sind die häufigsten Verwendungszwecke der Rekursion?

WBOY
Freigeben: 2024-04-22 16:36:01
Original
1101 Leute haben es durchsucht

Rekursion ist eine Technik, bei der sich eine Funktion selbst aufruft, und wird häufig in Szenarien verwendet, in denen Probleme Schritt für Schritt gelöst werden. In C++ hat die Rekursion die folgenden allgemeinen Verwendungszwecke: Lösen von Fibonacci-Zahlen, Berechnen von Fakultäten, Berechnen von Permutationen und Kombinationen, Durchqueren von Baumstrukturen, Lösen von Labyrinth-Lösungsproblemen Wissenschaftliche Technik, die es einer Funktion ermöglicht, sich selbst aufzurufen. Es wird häufig in Szenarien eingesetzt, die eine schrittweise Problemlösung erfordern. In diesem Artikel werden die üblichen Verwendungsmöglichkeiten der Rekursion in C++ untersucht und anhand praktischer Fälle veranschaulicht.

Grundlegende Verwendung: Fibonacci-FolgeC++ 函数的递归实现:递归的常见用法有哪些?

Die einfachste rekursive Verwendung besteht darin, die Fibonacci-Folge zu finden. Jede Zahl in dieser Folge ist die Summe der beiden vorherigen Zahlen. Die spezifische Implementierung ist wie folgt:

int fibonacci(int n) {
  if (n <= 1) {
    return 1;
  } else {
    return fibonacci(n - 1) + fibonacci(n - 2);
  }
}
Nach dem Login kopieren

Fabrikberechnung

Das Ermitteln der Fakultät einer Zahl ist ebenfalls eine klassische rekursive Anwendung. Die Fakultät ist das Ergebnis der Multiplikation dieser Zahl mit allen positiven ganzen Zahlen, die kleiner als sie sind.

int factorial(int n) {
  if (n == 0) {
    return 1;
  } else {
    return n * factorial(n - 1);
  }
}
Nach dem Login kopieren

Permutationen und Kombinationen

Rekursion kann auch zur Berechnung von Permutationen und Kombinationen verwendet werden. Anordnungen sind Möglichkeiten, Objekte in einer bestimmten Reihenfolge anzuordnen, während Kombinationen Möglichkeiten sind, Objekte ohne Rücksicht auf die Reihenfolge anzuordnen.

Permutation:

int permutations(int n, int r) {
  if (r == 0) {
    return 1;
  } else {
    return n * permutations(n - 1, r - 1);
  }
}
Nach dem Login kopieren

Kombination:

int combinations(int n, int r) {
  if (r == 0 || n == r) {
    return 1;
  } else {
    return combinations(n - 1, r - 1) + combinations(n - 1, r);
  }
}
Nach dem Login kopieren
Traversierung von Baumstrukturen

Rekursion wird häufig zum Traversieren von Baumstrukturen wie Bäumen und Diagrammen verwendet.

Binärbaum-Vorbestellungsdurchquerung:

void preorderTraversal(TreeNode* root) {
  if (root != nullptr) {
    std::cout << root->val;
    preorderTraversal(root->left);
    preorderTraversal(root->right);
  }
}
Nach dem Login kopieren

Praktischer Fall: Labyrinthlösung

Die Verwendung von Rekursion kann das Labyrinthlösungsproblem lösen. Der rekursive Algorithmus funktioniert, indem er alle möglichen Pfade durchprobiert, bis er den Pfad zum Ausgang findet.

bool solveMaze(int x, int y, int** maze) {
  if (maze[x][y] == 2) {
    return true;
  } else if (maze[x][y] == 0) {
    return false;
  } else {
    maze[x][y] = 0;
    return solveMaze(x + 1, y, maze) || 
           solveMaze(x, y + 1, maze) || 
           solveMaze(x - 1, y, maze) || 
           solveMaze(x, y - 1, maze);
  }
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonRekursive Implementierung von C++-Funktionen: Was sind die häufigsten Verwendungszwecke der Rekursion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage