Rekursi di Elixir
Penjelasan
Karena data di Elixir immutable, tidak ada loop `for` yang mengubah counter seperti bahasa imperatif — pengulangan diekspresikan lewat rekursi (mirip Haskell), atau lewat fungsi `Enum`/`Stream` untuk kasus umum. Fungsi rekursif butuh base case (kondisi berhenti) dan recursive case (memanggil dirinya sendiri dengan argumen yang "lebih kecil").
Contoh Konsep
defmodule Matematika do
def faktorial(0), do: 1 # base case
def faktorial(n), do: n * faktorial(n - 1) # recursive case
end
Matematika.faktorial(5) # 120
defmodule ListHelper do
def jumlah([]), do: 0
def jumlah([kepala | ekor]), do: kepala + jumlah(ekor)
end
ListHelper.jumlah([1, 2, 3, 4, 5]) # 15
Praktikum
Buat module Rekursi dengan fungsi panjang/1 yang menghitung jumlah elemen list secara rekursif (tanpa memakai length bawaan).
Ketik/edit bebas di sini untuk latihan — kode ini tidak dijalankan.
Tips
Untuk kasus umum (map, filter, jumlah), lebih baik pakai fungsi `Enum` bawaan daripada menulis rekursi manual — rekursi manual lebih cocok dipakai kalau logikanya benar-benar spesifik dan tidak tercakup fungsi Enum yang ada.