Objectif
Nous cherchons à écrire une fonction en langage Python qui renvoie la factorielle n!=1\times2\times3\times\dots\times n d’un entier naturel n rentré par l’utilisateur.
Première méthode
La variable res
est initialisée à 1 qui est :
- la valeur de 0! ;
- l’élément neutre pour la multiplication.
La valeur de res
est successivement multipliée par n, n-1, … ; 2
def factorielle1(n):
res=1
while n>1:
res=res*n
n-=1
return res
Deuxième méthode
La boucle while
est remplacée par une boucle for
. Deux cas sont envisagés :
- si n=0, alors n!=1 ;
- si n est un entier strictement positif, sa factorielle s’obtient en multipliant n successivement par 2, 3, …, n-1.
def factorielle2(n):
if n==0:
n=1
for i in range(2,n):
n*=i
return n
Troisième méthode
La fonction est récursive. Elle est basée sur la relation :
n!=n\times(n-1)! pour n\in\mathbb{N}^*
def factorielle3(n):
if n<=1:
return 1
else:
return factorielle3(n-1)*n