Maison > Article > développement back-end > Implémentation récursive de fonctions C++ : un exemple classique de récursion ?
La récursion est une technique de programmation qui permet à une fonction de s'appeler pour résoudre des problèmes complexes en la décomposant en sous-problèmes. Dans un cas pratique, l'implémentation récursive du puzzle Tour de Hanoï : 1. Lorsqu'il n'y a qu'un seul disque, déplacez-vous directement vers la tour cible. 2. Déplacez le petit disque vers la tour auxiliaire. 3. Déplacez le plus grand disque vers la tour cible. 4. Déplacez le petit disque de la tour auxiliaire vers la tour cible.
La récursion est une technique de programmation qui permet à une fonction de s'appeler pour résoudre un problème. Cela convient aux problèmes complexes qui doivent être décomposés en sous-problèmes.
En C++, la syntaxe de la fonction récursive est la suivante :
return_type function_name(parameter_list) { // 处理基线情况 if (base_condition) { return base_result; } // 处理递归情况 return function_name(updated_parameter_list); }
Où :
return_type
est le type renvoyé par la fonction. return_type
是函数返回的类型。function_name
是函数的名称。parameter_list
是传递给函数的参数列表。base_condition
是递归的基线情况,它决定函数的递归循环何时结束。base_result
是当基线情况为 true
时函数返回的结果。updated_parameter_list
function_name
est le nom de la fonction. parameter_list
est la liste de paramètres transmise à la fonction. base_condition
est la condition de base de la récursion, qui détermine quand la boucle récursive de la fonction se termine.
base_result
est le résultat renvoyé par la fonction lorsque la situation de base est true
. updated_parameter_list
est la liste de paramètres qui est mise à jour lors de l'appel récursif de la fonction.
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; }🎜🎜Sortie : 🎜🎜
请输入圆盘数量:3 移动盘子 1 从塔 A 到塔 C 移动盘子 2 从塔 A 到塔 B 移动盘子 1 从塔 C 到塔 B 移动盘子 3 从塔 A 到塔 C 移动盘子 1 从塔 B 到塔 A 移动盘子 2 从塔 B 到塔 C 移动盘子 1 从塔 A 到塔 C
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!