Maison >développement back-end >C++ >Implémentation récursive de fonctions C++ : un exemple classique de récursion ?

Implémentation récursive de fonctions C++ : un exemple classique de récursion ?

PHPz
PHPzoriginal
2024-04-22 15:27:02950parcourir

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.

C++ 函数的递归实现:递归的经典谜题示例?

Implémentation récursive d'une fonction C++ : exemple de puzzle classique

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.

Syntaxe de la fonction récursive

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.

🎜🎜Cas pratique : Tour de Hanoï 🎜🎜La Tour de Hanoï est un puzzle récursif classique. Il comporte trois tours, chacune avec un nombre différent de disques. Le but est de déplacer tous les disques de la première tour vers la troisième tour tout en veillant à ce que les petits disques soient toujours au-dessus des plus grands disques. 🎜
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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn