Cara mengkueri faktorial dari 6 secara rekursif
Pada latihan sebelumnya, Anda mengkueri faktorial 5! dengan solusi iteratif. Sekarang, Anda akan menghitung 6! secara rekursif. Kita memecah masalah menjadi masalah-masalah lebih kecil dengan tipe yang sama untuk mendefinisikan faktorial n! secara rekursif. Untuk itu, definisi berikut dapat digunakan:
0! = 1untukstep = 0(n+1)! = n! * (step+1)untukstep > 0
Dengan definisi sederhana ini, Anda dapat menghitung faktorial dari setiap bilangan. Pada latihan ini, n! direpresentasikan oleh factorial.
Anda akan memanfaatkan definisi di atas dengan bantuan CTE rekursif.
Latihan ini adalah bagian dari kursus
Kueri Hierarkis dan Rekursif di SQL Server
Petunjuk latihan
- Inisialisasi kolom
factorialdanstepke 1. - Hitung bagian rekursif dengan
factorial * (step + 1). - Hentikan proses rekursi ketika nilai iterasi saat ini lebih kecil daripada bilangan faktorial target.
Latihan interaktif praktis
Cobalah latihan ini dengan menyelesaikan kode contoh berikut.
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;