CommencerCommencez gratuitement

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! = 1 pour step = 0
  • (n+1)! = n! * (step+1) pour step > 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>
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 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;
Modifier et exécuter le code