Arithmétique

Factorielle récursive

Énoncé

Lire N entre 0 et 18 et écrire une fonction récursive utilisant N! = N × (N − 1)!, avec 0! = 1.

Exemples et cas limites

Saisissez ces valeurs dans la console pour vérifier votre résultat :

Entrée
N = 5
Sortie attendue
120
Entrée
N = 0
Sortie attendue
1
Entrée
N = -1
N = 5
Sortie attendue
120

Code algorithmique

factorielle_recursive.algo
1algorithme factorielle_recursive
2debut
3 repeter
4 ecrire("N = ")
5 lire(n)
6 jusqua 0 ≤ n ≤ 18
7 // compléter le traitement demandé dans l’énoncé.
8fin
9
10fonction factorielle(n : entier) : entier
11debut
12 // compléter le traitement demandé dans l’énoncé.
13 retourner 1
14fin

Méthode

  1. Retourner 1 pour N = 0.
  2. Sinon, retourner N multiplié par l’appel sur N − 1.
À retenir :

La fonction s’appelle elle-même : c’est la récursivité. Pour 3, elle calcule 3 × Factorielle(2), puis 2 × Factorielle(1), puis 1 × Factorielle(0). Le cas N = 0 retourne 1 et arrête les appels. L’exercice « Factorielle » propose la version avec une boucle.

Comprendre la correction

Déroulement sur un exemple

  1. Pour N = 3, Factorielle(3) attend le résultat de 3 × Factorielle(2).
  2. Les appels descendent jusqu’à Factorielle(0), qui retourne 1 sans nouvel appel.
  3. Au retour des appels, les résultats sont 1, 2 puis 6. Le programme principal affiche 6.

Erreurs à éviter

  • Sans le cas N = 0, les appels ne s’arrêtent pas.
  • L’appel porte sur N − 1 pour se rapprocher de 0. Rappeler Factorielle(n) ne réduit pas le problème.
Consulter le guide de syntaxe algorithmique