Un concept peu utilisé dans C est fonction récursivité. Une fonction récursive est simplement une fonction qui s'appelle elle-même . Les fonctions récursives peuvent être utiles dans certaines fonctions , mais peuvent généralement être remplacé en utilisant une boucle . But de la fonction récursive
Une fonction récursive peut être utilisé lorsqu'une opération doit être effectuée à plusieurs reprises sur un ensemble de données. Par exemple, une fonction récursive peut effectuer plusieurs fois une opération mathématique sur une valeur numérique jusqu'à ce qu'une condition soit remplie .
Création d'une fonction récursive
Toute fonction qui appelle lui-même est une fonction récursive . Il n'y a pas d'exigences particulières pour une fonction à appeler lui-même , il ne peut le faire que Cait appellerait une autre fonction. À titre d'exemple , ce qui suit est une fonction récursive pour calculer le nombre suivant dans une séquence de Fibonacci :
longue fib (long n)
{
if ( n < = 2)
{
return 1; }
autre
{
retour fib ( n - 1) + fib (n - 2);
} }
problèmes avec récursivité
récursivité a plusieurs problèmes possibles qui devraient être considérés avant d'écrire une fonction récursive . Les fonctions récursives peuvent être très inefficaces , non seulement il ya une surcharge de la pile des appels répétés de la fonction , fonctions récursives peuvent facilement se retrouver avec des temps de fonctionnement exponentielles selon la façon dont elles sont écrites . Les fonctions récursives courent également un risque de causer un débordement de pile si le nombre d'appels récursifs est trop élevé.
Récursivité Vs . Itération
La plupart des fonctions récursives peuvent être mises en œuvre en fonction non récursive qui utilise une boucle itérative . Ceci tend à être plus efficace et plus sûr , mais dans certains cas peut être plus difficile à écrire et à lire.
Fonctions récursives
sont le plus souvent utilisés lors de la navigation d'une structure en forme d'arbre , ou lors de l'utilisation itération rendraient le fonctionner beaucoup plus complexe. Dans la plupart des autres cas , l'itération doit être utilisé à la place.