Rechercher
 

Améliorations / Corrections

Vous avez des améliorations (ou des corrections) à proposer pour ce document : je vous remerçie par avance de m'en faire part, cela m'aide à améliorer le site.

Emplacement :

Description des améliorations :

Mise en oeuvre d'une méthode récursive en C#

Une méthode récursive est une méthode qui s'invoque elle-même pour produire son résultat. Le langage C# permet, bien entendu, de définir ce type de méthode.

pensez à ne pas oublier le cas terminal en cas de définition d'une méthode récursive. Le cas terminal permet d'arrêter le rappel récursif, sans quoi vous satureriez la pile d'exécution : cela aurait pour effet de terminer votre programme en erreur.

Exemple de code

 1 
 2 
 3 
 4 
 5 
 6 
 7 
 8 
 9 
 10 
 11 
 12 
 13 
 14 
 15 
 16 
 17 
 18 
 19 
 20 
 21 
 22 
 23 
 24 
 25 
 26 
 27 
 28 
 29 
 30 
 31 
 32 
 33 
 34 
 35 
 36 
 37 
 38 
using System;

namespace Factorielle
{
    class Program
    { 
        // Implémentation récursive de la fonction factorielle
        static long FactRect(long value)
        {
            if (value == 0) return 1;
            return value * FactRect(value - 1);
        }

        // Implémentation itérative de la fonction factorielle
        static long Fact(long value)
        {
            long accumulator = 1;
            while( value > 1 )
            {
                accumulator *= value--;
            }
            return accumulator;
        }

        // Point d'entrée du programme
        static void Main(string[] args)
            Console.WriteLine("0! == " + FactRect(0));
            Console.WriteLine("1! == " + FactRect(0));
            Console.WriteLine("5! == " + FactRect(0));
            Console.WriteLine("6! == " + FactRect(0));

            Console.WriteLine("0! == " + Fact(0));
            Console.WriteLine("1! == " + Fact(0));
            Console.WriteLine("5! == " + Fact(0));
            Console.WriteLine("6! == " + Fact(0));
        }
    }
}
Définition d'une méthode récursive et de son équivalent avec une approche itérative.