Clojure - Rekursi

Kami telah melihat pernyataan berulang dalam topik sebelumnya dan sedangkan loop 'for' agak seperti loop, recur adalah lingkaran nyata di Clojure.

Jika Anda memiliki latar belakang pemrograman, Anda mungkin pernah mendengar tentang rekursi ekor, yang merupakan fitur utama dari bahasa fungsional. Bentuk khusus rekursi ini adalah yang menerapkan rekursi ekor. Seperti yang diindikasikan oleh kata "rekursi ekor", rekursi harus dipanggil pada posisi ekor. Dengan kata lain, rekurensi harus menjadi hal terakhir yang harus dievaluasi.

Contoh paling sederhana dari pernyataan berulang digunakan dalam loop 'for'. Dalam contoh berikut, pernyataan berulang digunakan untuk mengubah nilai variabel 'i' dan memasukkan nilai variabel kembali ke ekspresi loop.

Contoh

(ns clojure.examples.hello
   (:gen-class))

;; This program displays Hello World
(defn Example []
   (loop [i 0]
      (when (< i 5)
      (println i)
      (recur (inc i)))))
(Example)

Keluaran

Program di atas menghasilkan keluaran sebagai berikut.

0
1
2
3
4