Clojure - การเรียกซ้ำ

เราได้เห็นคำสั่งซ้ำในหัวข้อก่อนหน้านี้และในขณะที่การวนซ้ำ 'for' นั้นค่อนข้างเหมือนลูป recur เป็นวงที่แท้จริงใน Clojure

หากคุณมีพื้นฐานการเขียนโปรแกรมคุณอาจเคยได้ยินเกี่ยวกับการเรียกซ้ำหางซึ่งเป็นคุณสมบัติหลักของภาษาที่ใช้งานได้ แบบฟอร์มพิเศษที่เกิดซ้ำนี้เป็นแบบที่ใช้การเรียกซ้ำหาง เนื่องจากคำว่า "tail recursion" ระบุว่าต้องเรียกซ้ำในตำแหน่งหาง กล่าวอีกนัยหนึ่งการเกิดซ้ำต้องเป็นสิ่งสุดท้ายที่จะได้รับการประเมิน

ตัวอย่างที่ง่ายที่สุดของคำสั่งซ้ำใช้ภายในลูป 'for' ในตัวอย่างต่อไปนี้คำสั่งซ้ำใช้เพื่อเปลี่ยนค่าของตัวแปร 'i' และป้อนค่าของตัวแปรกลับไปที่นิพจน์ลูป

ตัวอย่าง

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

เอาต์พุต

โปรแกรมข้างต้นสร้างผลลัพธ์ต่อไปนี้

0
1
2
3
4