Comment interroger récursivement la factorielle de 6
Dans le dernier exercice, vous avez interrogé la factorielle 5! avec une solution itérative. Maintenant, vous allez calculer 6! récursivement. On réduit le problème en sous‑problèmes du même type pour définir récursivement la factorielle n!. Pour cela, on peut utiliser la définition suivante :
0! = 1pourstep = 0(n+1)! = n! * (step+1)pourstep > 0
Avec cette simple définition, vous pouvez calculer la factorielle de n'importe quel nombre. Dans cet exercice, n! est représenté par factorial.
Vous allez mettre à profit la définition ci‑dessus au moyen d'une CTE récursive.
Cette activité fait partie du cours
Requêtes hiérarchiques et récursives dans SQL Server
Instructions de l’exercice
- Initialisez les champs
factorialetstepà 1. - Calculez la partie récursive avec
factorial * (step + 1). - Arrêtez la récursion lorsque la valeur d'itération courante est inférieure au nombre factoriel cible.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
WITH calculate_factorial AS (
SELECT
-- Initialize step and the factorial number
___ AS step,
___ AS factorial
UNION ALL
SELECT
step + 1,
-- Calculate the recursive part by n!*(n+1)
___ * (step + 1)
FROM calculate_factorial
-- Stop the recursion reaching the wanted factorial number
WHERE step < ___)
SELECT factorial
FROM calculate_factorial;