La récursion est le processus par lequel une fonction s'appelle elle-même. La complexité temporelle de la récursion peut être analysée en comptant le nombre d'appels récursifs, par exemple, la fonction factorielle est O(n^2), et la fonction récursive du nième terme de la séquence de Fibonacci est O(φ^n), où φ est le nombre d'or.
Explication détaillée de la récursivité des fonctions C++ : analyse de la complexité de la récursion
Qu'est-ce que la récursivité ?
La récursion est le comportement d'une fonction qui s'appelle elle-même. La récursivité se produit lorsqu'une fonction s'appelle elle-même.
Exemple de récursion
Ce qui suit est une fonction récursive qui calcule factoriellement :
int factorial(int n) { if (n == 0) { return 1; } return n * factorial(n - 1); }
Analyse de complexité de la récursion
La complexité d'une fonction récursive peut être analysée en comptant le nombre de ses appels récursifs.
Pour la fonction factorielle :
Par analogie, lorsque n vaut k, le nombre d'appels récursifs est k + 1.
Le nombre d'appels récursifs forme une suite arithmétique : 1, 2, 3, ..., k + 1, et sa formule de sommation est :
1 + 2 + 3 + ... + (k + 1) = (k + 1) * (k + 2) / 2
Par conséquent, la complexité de la fonction factorielle est O(n^2) .
Cas pratique
Ce qui suit est une fonction récursive qui calcule le nième terme de la séquence de Fibonacci :
int fibonacci(int n) { if (n <= 1) { return 1; } return fibonacci(n - 1) + fibonacci(n - 2); }
Le nombre d'appels récursifs est lié au nombre d'or, et sa complexité est O(φ^n), où φ ≈ 1,618 C'est le nombre d'or.
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!