Heim >Backend-Entwicklung >C++ >Rekursive Implementierung von C++-Funktionen: Ein klassisches Rätselbeispiel für Rekursion?
Rekursion ist eine Programmiertechnik, die es einer Funktion ermöglicht, sich selbst aufzurufen, um komplexe Probleme zu lösen, indem sie sie in Unterprobleme zerlegt. In einem praktischen Fall die rekursive Implementierung des Turm-von-Hanoi-Rätsels: 1. Wenn nur eine Scheibe vorhanden ist, bewegen Sie sich direkt zum Zielturm. 2. Bewegen Sie die kleine Scheibe zum Hilfsturm. 3. Bewegen Sie die größte Scheibe zum Zielturm. 4. Bewegen Sie die kleine Scheibe vom Hilfsturm zum Zielturm.
Rekursion ist eine Programmiertechnik, die es einer Funktion ermöglicht, sich selbst aufzurufen, um ein Problem zu lösen. Dies eignet sich für komplexe Probleme, die in Teilprobleme zerlegt werden müssen.
In C++ lautet die Syntax der rekursiven Funktion wie folgt:
return_type function_name(parameter_list) { // 处理基线情况 if (base_condition) { return base_result; } // 处理递归情况 return function_name(updated_parameter_list); }
Wobei:
return_type
ist der von der Funktion zurückgegebene Typ. return_type
是函数返回的类型。function_name
是函数的名称。parameter_list
是传递给函数的参数列表。base_condition
是递归的基线情况,它决定函数的递归循环何时结束。base_result
是当基线情况为 true
时函数返回的结果。updated_parameter_list
function_name
ist der Name der Funktion. parameter_list
ist die an die Funktion übergebene Parameterliste. base_condition
ist die Grundbedingung der Rekursion, die bestimmt, wann die rekursive Schleife der Funktion endet.
base_result
ist das von der Funktion zurückgegebene Ergebnis, wenn die Grundsituation true
ist. updated_parameter_list
ist die Parameterliste, die beim rekursiven Aufruf der Funktion aktualisiert wird.
void hanoi(int n, char from, char to, char aux) { // 基线情况:只有一个圆盘时,直接移动到目标塔 if (n == 1) { cout << "移动盘子 " << n << " 从塔 " << from << " 到塔 " << to << endl; return; } // 递归情况:将塔上的较小圆盘移动到辅助塔 hanoi(n-1, from, aux, to); // 将最大的圆盘移动到目标塔 cout << "移动盘子 " << n << " 从塔 " << from << " 到塔 " << to << endl; // 将较小的圆盘从辅助塔移动到目标塔 hanoi(n-1, aux, to, from); } int main() { int num_disks; cout << "请输入圆盘数量:"; cin >> num_disks; // 调用递归函数解决汉诺塔问题 hanoi(num_disks, 'A', 'C', 'B'); return 0; }🎜🎜Ausgabe: 🎜🎜
请输入圆盘数量:3 移动盘子 1 从塔 A 到塔 C 移动盘子 2 从塔 A 到塔 B 移动盘子 1 从塔 C 到塔 B 移动盘子 3 从塔 A 到塔 C 移动盘子 1 从塔 B 到塔 A 移动盘子 2 从塔 B 到塔 C 移动盘子 1 从塔 A 到塔 C
Das obige ist der detaillierte Inhalt vonRekursive Implementierung von C++-Funktionen: Ein klassisches Rätselbeispiel für Rekursion?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!