始める無料で始める

6 の階乗を再帰でクエリする方法

前の演習では、反復的 な方法で 5! を求めました。今回は 6!再帰的 に計算します。同じ種類のより小さな問題に分解して、階乗 n! を再帰的に定義します。次の定義を使います。

  • step = 0 のとき 0! = 1
  • step > 0 のとき (n+1)! = n! * (step+1)

このシンプルな定義で、どの数の階乗も計算できます。本演習では、n!factorial で表します。

この定義を、再帰的な CTE を使って実装していきます。

この演習はコースの一部です

SQL Server における階層型クエリと再帰クエリ

コースを見る

演習の手順

  • factorialstep の各フィールドを 1 で初期化します。
  • 再帰部分を factorial * (step + 1) で計算します。
  • 現在の反復の値が目標の階乗の数より小さい間は再帰を続け、それ以外で停止します。

実践的なインタラクティブ演習

このサンプルコードを完成させて、この演習に挑戦してみましょう。

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;
コードを編集して実行