Maison  >  Article  >  développement back-end  >  Quelles sont les conditions de sortie d’une fonction récursive en C++ ?

Quelles sont les conditions de sortie d’une fonction récursive en C++ ?

PHPz
PHPzoriginal
2024-04-17 11:33:01358parcourir

Les conditions de sortie des fonctions récursives C++ incluent : Conditions de base : vérifiez si la fonction atteint un état qui peut renvoyer directement des résultats, en jugeant généralement si une certaine condition ou valeur de paramètre atteint le seuil. Condition de fin de récursion : Alternative ou en plus à la condition de base, garantissant que la fonction s'arrête après un certain nombre d'appels récursifs, en suivant la profondeur de récursion ou en définissant une limite maximale de profondeur de récursion.

C++ 递归函数的退出条件是什么?

Conditions de sortie des fonctions récursives en C++

Les fonctions récursives résolvent les problèmes en s'appelant à plusieurs reprises. Pour éviter de rester coincé dans une boucle récursive infinie, des conditions de sortie claires doivent être définies. En C++, les conditions de sortie sont généralement implémentées de la manière suivante :

1 Conditions de base :

  • sont utilisées pour déterminer quand une fonction atteint un état où elle peut renvoyer directement un résultat.
  • Vérifie généralement si une certaine condition est remplie ou si la valeur du paramètre atteint un certain seuil.
  • Lorsque la condition de base est vraie, la fonction reviendra directement.
bool isEven(int n) {
  if (n == 0) {  // 基线条件:当 n 为 0 时,返回 true
    return true;
  } 
  else {
    return isEven(n - 1);  // 递归调用
  }
}

2. Condition de terminaison récursive :

  • comme alternative ou complément à la condition de base.
  • Utilisé pour garantir que la fonction s'arrête après un certain nombre d'appels récursifs.
  • Obtenu en suivant la profondeur de récursion ou en définissant une limite maximale de profondeur de récursion.
int fibonacci(int n) {
  if (n <= 1) {  // 基线条件:当 n <= 1 时,返回 n
    return n;
  } 
  else if (n > MAX_RECURSION_DEPTH) {  // 递归终止条件:当递归深度超过限制时,返回错误值
    return -1;
  } 
  else {
    return fibonacci(n - 1) + fibonacci(n - 2);  // 递归调用
  }
}

Cas pratique

L'exemple de fonction suivant calcule la factorielle d'un nombre donné :

int factorial(int n) {
  if (n == 0) {  // 基线条件:当 n 为 0 时,返回 1
    return 1;
  } 
  else {
    return n * factorial(n - 1);  // 递归调用
  }
}

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