Partager via


Fonctions récursives

Toute fonction d'un programme C peut être appelée de manière récursive. Autrement dit, elle peut s'appeler elle-même. Le nombre d'appels récurrents est limité à la taille de la pile. Pour plus d’informations sur les options de l’éditeur de liens qui définissent la taille de la pile, consultez l’option de l’éditeur de liens /STACK (Allocations de la pile). Chaque fois que la fonction est appelée, un nouveau stockage est alloué pour les paramètres et les variables auto et register afin que leurs valeurs ne soient pas remplacées dans les appels non terminés. Les paramètres sont uniquement directement accessibles à l'instance de la fonction dans laquelle ils sont créés. Les paramètres précédents ne sont pas directement accessibles aux instances suivantes de la fonction.

Notez que les variables déclarées avec le stockage static ne nécessitent pas de nouveau stockage à chaque appel récurrent. Leur stockage existe pour la durée de vie du programme. Chaque référence à cette variable accède à la même zone de stockage.

Exemple

Cet exemple illustre des appels récurrents :

int factorial( int num );      /* Function prototype */

int main()
{
    int result, number;
    .
    .
    .
    result = factorial( number );
}

int factorial( int num )      /* Function definition */
{
    .
    .
    .
    if ( ( num > 0 ) || ( num <= 10 ) )
        return( num * factorial( num - 1 ) );
}

Voir aussi

Appels de fonction