Page d'Accueil

La Récurence

 

Introduction

Imaginez que vous voulez compter les nombres impairs positifs à partir d'un certain maximum jusqu'à un certain minimum. Par exemple, pour compter les nombres impairs de 1 à 9, vous utiliserez :

9, 7, 5, 3, et 1

Noter que, pour effectuer cette opération, vous considérez le plus élevé. Alors vous soustrayez 2 pour obtenir le précédent. Encore, vous soustrayez 2 du nombre pour obtenir le précédent. Ce que vous faites simplement est de soustraire une constante à ce que vous avez déjà, et vous inventer très peu. En programmation, vous pouvez résoudre ce type de problème en écrivant d'abord une fonction, et puis laisser la fonction faire appel à elle même. Ce sont là les bases de la récurence.

 

Création des méthodes de récurence

 Un type de formule pour créer une méthode de récurence est :

ReturnValue Function(Arguments, if any)
{
    Optional Action . . .
    Function();
    Optionan Action . . .
}

La méthode de récurence commence avec une valeur de retour. Si elle ne renvoie pas une valeur, vous pouvez la définir avec void. Après son nom, la méthode peut prendre un ou plusieurs arguments. La majeure partie du temps, une méthode récurente prend au moins un argument qu'elle modifierait alors. Dans le corps de la méthode, vous pouvez prendre les mesures nécessaires. Il n'y a aucune étape de détail à suivre en appliquant une méthode récurente mais il y a deux règles principales à observer :

  • Dans son corps, la méthode doit s'appeler
  • Avant ou après s'être appeler, la méthode doit vérifier une condition qui lui permettrait de s'arrêter, autrement, elle pourrait fonctionner sans interruption

Pour notre exemple, à savoir compter des nombres impairs en décrémentants, vous pourriez commencer par créer une méthode qui prend un nombre entier comme argument. Pour exercer un certain contrôle sur les valeurs les plus basses possibles, nous considérerons seulement des nombres positifs. Dans le corps de la méthode, nous afficheront la valeur courante de l'argument, soustrairons 2, et rappellerons la méthode par elle-même. Voici notre fonction :

using System;

class Program
{
    static void OddNumbers(int a)
    {
        if (a >= 1)
        {
            Console.Write("{0}, ", a);
            a -= 2;
            OddNumbers(a);
        }
    }
    
    static void Main()
    {
        const int Number = 9;

        Console.WriteLine("Odd Numbers");
        OddNumbers(Number);
        
        Console.WriteLine();
    }
}

Noter que la méthode s'appelle dans son corps. Ceci produirait :

Odd Numbers
9, 7, 5, 3, 1,
Press any key to continue . . .

Utiliser les méthodes de  récurence

Les méthodes de récurence fournissent un mécanisme valable pour la confection des listes ou des séries, qui ont des valeur qui sont en croissance ou en décroissance mais suivent un modèle. Imaginer que, au lieu d'afficher simplement des nombres impairs comme nous avons fait plus haut, vous voulez les ajouter incrémentalement. Si vous avez 1, il produira également 1. Si vous avez 5, vous voudriez additionner 1 à 3, puis le résultat à 5, et ainsi de suite. Ceci peut être illustré comme suit :

                1 = 1
            1 + 3 = 4
        1 + 3 + 5 = 9
    1 + 3 + 5 + 7 = 16
1 + 3 + 5 + 7 + 9 = 25

Pour effectuer cette opération, vous considéreriez 1. Si le nombre est inférieur ou égal à 1, la méthode devrait renvoyer 1. Autrement, additionner 2 à 1, puis additionner 2 au nouveau résultat. Continuer ceci jusqu'à ce que vous obteniez la valeur de l'argument. La méthode peut être appliquée comme suit :

using System;

class Program
{
    static int AdditionalOdd(int a)
    {
        if (a <= 1)
            return 1;
        return a + AdditionalOdd(a - 2);
    }

    static void OddNumbers(int a)
    {
        if (a >= 1)
        {
            Console.Write("{0}, ", a);
            a -= 2;
            OddNumbers(a);
        }
    }
    
    static void Main()
    {
        const int Number = 9;

        Console.WriteLine("Odd Numbers");
        OddNumbers(Number);

        Console.WriteLine();
        Console.WriteLine("Sum of Odds: {0}\n", AdditionalOdd(Number));
    }
}

Ceci produirait :

Odd Numbers
9, 7, 5, 3, 1,
Sum of Odds: 25

Press any key to continue . . .
 

Page d'Accueil Copyright © 2007-2008, Yevol