La fonction factorielle⚓︎
Pour un entier naturel \(n\), on note \(n! = 1 × 2 × 3 × 4 × ... × (n - 1) × n\), le produit des entiers naturels jusqu'à \(n\), sauf zéro.
Ainsi
- \(4! = 1 × 2 × 3 × 4 = 24\)
- \(5! = 1 × 2 × 3 × 4 × 5 = 120\)
On a aussi
- \(1! = 1\), il y a un seul facteur égal à \(1\),
- \(0! = 1\), comme un produit vide.
def factorielle(n: int) -> int:bksl-nl "Renvoie la factorielle de n >= 0"bksl-nl ...bksl-nlbksl-nlbksl-nlassert factorielle(0) == 1bksl-nlassert factorielle(1) == 1bksl-nlassert factorielle(4) == 24bksl-nlassert factorielle(5) == 120bksl-nlbksl-nlbksl-nlbksl-nl
Question 1
Donnez une version itérative d'une fonction factorielle
qui prend un argument n
entier naturel ; on garantit que n >= 0
.
Indice 1
On pourra faire une boucle pour x
allant de 1
inclus à n + 1
exclu.
Réponse
def factorielle(n: int) -> int:
"Renvoie la factorielle de n >= 0"
y = 1
for x in range(1, n + 1):
y = y * x
return y
Question 2
Donnez une version récursive de factorielle
.
Indice 2
On pourra constater que \(5! = 4! × 5\), et que, de manière générale,
pour \(n > 0\), on a \(n! = (n - 1)! × n\)
Réponse 2
def factorielle(n: int) -> int:
"Renvoie la factorielle de n >= 0"
if n == 0:
return 1
else:
return factorielle(n - 1) * n