Maison > développement back-end > C++ > Implémentation récursive de fonctions C++ : exemples de récursion de queue en action ?

Implémentation récursive de fonctions C++ : exemples de récursion de queue en action ?

WBOY
Libérer: 2024-04-22 12:03:01
original
1257 Les gens l'ont consulté

Optimisation de la récursion de queue en C++ : la récursion de queue est une technique d'optimisation dans laquelle une fonction revient immédiatement après s'être appelée. En spécifiant le mot-clé noinline, la récursion de queue peut être implémentée en C++ pour améliorer les performances. Exemple pratique : utilisez la récursion de queue pour calculer la factorielle, qui est définie comme le produit d'un entier positif de 1 par un nombre donné.

C++ 函数的递归实现:尾递归在实际应用中的示例?

Implémentation récursive de fonctions en C++ : Un examen plus approfondi de la récursion de queue

La récursion est une technique de programmation puissante qui permet à une fonction de s'appeler elle-même. Bien qu'elle soit polyvalente, la récursivité peut souffrir de problèmes de performances dans certaines situations. L'optimisation de la récursivité de queue peut atténuer cet effet, rendant le programme plus rapide.

Qu'est-ce que la récursion de la queue ?

La récursion de queue signifie que la fonction revient immédiatement après s'être appelée. Cela permet au compilateur d'omettre les trames en double dans la pile d'appels, améliorant ainsi les performances.

Implémentation tail-récursive en C++

En C++, vous pouvez indiquer une fonction tail-récursive en spécifiant le mot-clé noinline : noinline 关键字来指示尾递归函数:

#include <iostream>

int factorial(int n) {
  if (n == 0) {
    return 1;
  }
  return n * factorial(n - 1);
}

int main() {
  int num = 5;
  std::cout << "阶乘 " << num << " 为 " << factorial(num) << std::endl;
  return 0;
}
Copier après la connexion

在这个示例中,factorial()

int factorial(int n) {
  if (n == 0) {
    return 1;
  }
  return n * factorial(n - 1);
}
Copier après la connexion

Dans cet exemple, factorial()< /code> La fonction est déclarée récursive car elle revient immédiatement après s'être appelée. Cela permet au compilateur d'optimiser la fonction, améliorant ainsi ses performances.

Cas pratique : Calcul factoriel

Le calcul factoriel est un exemple largement utilisé de récursivité de queue. Factorielle est définie comme le produit d'entiers positifs, commençant à 1 et remontant jusqu'au nombre donné :

factorial(5)
  -> 5 * factorial(4)
    -> 4 * factorial(3)
      -> 3 * factorial(2)
        -> 2 * factorial(1)
          -> 1 * factorial(0)
            -> 1
Copier après la connexion
Lorsque la valeur passée à la fonction est 5, l'appel récursif ressemblera à ceci :

rrreee

La fonction remontera dans la pile d'appels, en calculant en cours de route. Le résultat intermédiaire est 120, qui est la factorielle de 5. 🎜

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal