CommencezCommencez gratuitement

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! = 1 pour step = 0
  • (n+1)! = n! * (step+1) pour step > 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

Voir le cours

Instructions de l’exercice

  • Initialisez les champs factorial et step à 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;
Modifier et exécuter le code