Rekursi di Haskell
Penjelasan
Haskell TIDAK punya loop `for`/`while` seperti bahasa imperatif — semua pengulangan diekspresikan lewat REKURSI: fungsi memanggil dirinya sendiri dengan input yang "lebih kecil", sampai mencapai base case (kondisi berhenti). Setiap fungsi rekursif butuh minimal satu base case supaya tidak berulang tanpa akhir.
Contoh Konsep
faktorial :: Int -> Int
faktorial 0 = 1 -- base case
faktorial n = n * faktorial (n - 1) -- recursive case
-- faktorial 5 = 5 * faktorial 4 = 5 * 4 * faktorial 3 = ... = 120
jumlahList :: [Int] -> Int
jumlahList [] = 0 -- base case: list kosong
jumlahList (x:xs) = x + jumlahList xs -- x = elemen pertama, xs = sisanya
Praktikum
Buat fungsi rekursif panjangList :: [Int] -> Int yang menghitung jumlah elemen sebuah list (tanpa memakai fungsi length bawaan).
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Pola `(x:xs)` sangat umum di fungsi rekursif Haskell — `x` adalah elemen pertama (head), `xs` adalah sisanya (tail), dan fungsi biasanya memproses `x` lalu memanggil dirinya sendiri secara rekursif pada `xs`.