遞歸的基本概念非常簡單:一段給定的代碼對自身進行調用,直到某些邊界條件得到滿足。在本文中,我們將演示如何在T-SQL中使用遞歸。
在我的眼中,遞歸是最為精致的程序結構之一。我已經在許多場合用不同的編程語言實現過它。遞歸的基本概念非常簡單:一段給定的代碼對自身進行調用,直到某些邊界條件得到滿足。我將通過下面的內容展示如何在T-SQL中使用遞歸。我所用到的是遞歸的經典例子:階乘計算。
階乘的意思就是將小於等於這一數字的所有數字相乘,直至乘到2。例如,factorial(10)即等於10 * 9 * 8 * 7 * 6 * 5 * 4 * 3 * 2(你也可以加上“*1”,但似乎是多此一舉)。
以下代碼即實現了階乘:
CREATE PROCEDURE [dbo].[Factorial_ap]
(
@Number Integer,
@RetVal Integer OUTPUT
)
AS
DECLARE @In Integer
DECLARE @Out Integer
IF @Number != 1
BEGIN
SELECT @In = @Number – 1
EXEC Factorial_ap @In, @Out OUTPUT
SELECT @RetVal = @Number * @Out
END
ELSE
BEGIN
SELECT @RetVal = 1
END
RETURN
GO