การเพิ่มประสิทธิภาพการเรียกซ้ำ Tail recursion มี สถานะพิเศษในแร็กเกต เนื่องจากคอมไพเลอร์สังเกตเห็นการเรียกส่วนท้ายและปรับให้เหมาะสม โดยปกติ การเรียกใช้ฟังก์ชันแต่ละครั้ง รวมถึงการเรียกซ้ำ จะทำให้อาร์กิวเมนต์ชุดอื่นถูกบันทึกในบล็อกของหน่วยความจำที่เรียกว่า call stack
หางเป็นการเรียกซ้ำหรือไม่
การเรียกซ้ำหางคืออะไร? ฟังก์ชั่นแบบเรียกซ้ำ เป็นแบบเรียกซ้ำส่วนท้ายเมื่อมีการเรียกซ้ำเป็นสิ่งสุดท้ายที่ดำเนินการโดยฟังก์ชัน ตัวอย่างเช่น การพิมพ์ฟังก์ชัน C++ ต่อไปนี้เป็นแบบเรียกซ้ำท้าย
หาง OCaml เรียกซ้ำหรือไม่
OCaml Tail recursion
ภาษาที่ใช้งานได้เช่น OCaml พึ่งพา ใช้ฟังก์ชันแบบเรียกซ้ำอย่างหนัก อย่างไรก็ตาม ฟังก์ชันดังกล่าวอาจทำให้หน่วยความจำเกินปริมาณการใช้งาน หรือเมื่อจัดการชุดข้อมูลขนาดใหญ่ เพื่อกองล้นการเรียกซ้ำของหางเป็นแหล่งสำคัญของการเพิ่มประสิทธิภาพในกรณีเช่นนี้
หางวนซ้ำวนซ้ำไหม
วิธีการเรียกซ้ำส่วนท้ายคือ วิธีหนึ่งในการระบุกระบวนการวนซ้ำ การวนซ้ำเป็นเรื่องธรรมดามากที่ภาษาโปรแกรมส่วนใหญ่มีโครงสร้างพิเศษสำหรับการระบุที่เรียกว่าลูป
Quicksort tail recursive หรือไม่
ก. TAIL- RECURSIVE-QUICKSORT ทำสิ่งที่ QUICKSORT ทำอย่างแท้จริง; จึงเรียงลำดับได้อย่างถูกต้อง QUICKSORT และ TAIL-RECURSIVE-QUICKSORT ทำการแบ่งพาร์ติชั่นแบบเดียวกัน จากนั้นแต่ละตัวเรียกตัวเองด้วยอาร์กิวเมนต์ A, p, q − 1 QUICKSORT จะเรียกตัวเองอีกครั้ง โดยมีอาร์กิวเมนต์ A, q + 1, r.