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, kursun bir parçasıdır
SQL Server'da Hiyerarşik ve Özyinelemeli Sorgular
Egzersiz 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ı etkileşimli egzersiz
Bu egzersizi bu örnek kodu tamamlayarak deneyin.
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;