Study
Elixir

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).

Editor Latihan

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.