6'nın faktöriyelini özyinelemeli olarak nasıl sorgularsın
Son egzersizde, 5! ifadesini yinelemeli (iterative) bir çözümle sorguladın. Şimdi 6! değerini özyinelemeli (recursive) olarak hesaplayacaksın. Faktöriyel n! değerini özyinelemeli tanımlamak için problemi aynı türden daha küçük problemlere indirgeriz. Bunun için şu tanımı kullanabiliriz:
step = 0için0! = 1step > 0için(n+1)! = n! * (step+1)
Bu basit tanımla her sayının faktöriyelini hesaplayabilirsin. Bu egzersizde n!, factorial ile temsil ediliyor.
Yukarıdaki tanımı özyinelemeli bir CTE yardımıyla kullanacaksın.
Bu egzersiz
SQL Server'da Hiyerarşik ve Özyinelemeli Sorgular
kursunun bir parçasıdırEgzersiz talimatları
factorialvestepalanlarını 1 ile başlat.- Özyinelemeli kısmı
factorial * (step + 1)ile hesapla. - Mevcut yineleme değeri hedef faktöriyel sayısından küçük olduğunda özyineleme sürecini durdur.
Uygulamalı interaktif egzersiz
Bu örnek kodu tamamlayarak bu egzersizi bitirin.
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;