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 :

Définition de fonctions en Python

Le langage Python permet, bien entendu de définir des fonctions. De plus, il permet la définition de fonctions récursives.

Exemple de code

Cet exemple de code compare deux manières de coder une fonction de calcul de factorielle. La première, factIter, utilise un algorithme itératif alors que la seconde, factRec utilise un algorithme récursif.

#!/usr/bin/python3
                                
def factIter( n ):
    sum = 1
    while n>1:
        sum *= n
        n -= 1
    return sum

def factRec( n ):
    if n == 0 or n == 1:
        return 1
    return n * factRec( n - 1 )


print( "---factIter tests-----------------------------" )
print( factIter( 3 ) )
print( factIter( 6 ) )

print( "---factRec tests------------------------------" )
print( factRec( 3 ) )
print( factRec( 6 ) )

Pour lancer cet exemple, veuillez procéder ainsi :

$> python3 Factorielle.py 
---factIter tests-----------------------------
6
720
---factRec tests------------------------------
6
720
$>
n'oubliez jamais que la pile d'éxecution est bornée. Comme une fonction récursive utilise la pile d'exécution, on ne peut pas produire une chaîne d'appels infinie. Comparer les deux approches en calculant des factorielle sur des grandes valeurs (plus de 1000) et vous vérrez les limitations de l'approche récursive.