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