Comment interroger récursivement le factoriel de 6
Dans le dernier exercice, vous avez interrogé le factoriel 5! avec une solution itérative. À présent, vous allez calculer 6! récursivement. Nous réduisons le problème en sous-problèmes du même type pour définir récursivement le factoriel n!. Pour cela, on peut utiliser la définition suivante :
0! = 1pourstep = 0(n+1)! = n! * (step+1)pourstep > 0
Avec cette définition simple, vous pouvez calculer le factoriel de n’importe quel nombre. Dans cet exercice, n! est représenté par factorial.
Vous allez exploiter la définition ci-dessus à l’aide d’une CTE récursive.
Cet exercice fait partie du cours
<cours>Requêtes hiérarchiques et récursives dans SQL Server</cours>Instructions de l’exercice
- Initialisez les champs
factorialetstepà 1. - Calculez la partie récursive avec
factorial * (step + 1). - Arrêtez le processus de récursion lorsque la valeur d’itération actuelle est inférieure au nombre cible pour le factoriel.
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;