开始使用免费开始使用

如何递归查询 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;
编辑并运行代码