Logo th.boatexistence.com

การเรียกซ้ำของแร็กเกตหางหรือไม่?

สารบัญ:

การเรียกซ้ำของแร็กเกตหางหรือไม่?
การเรียกซ้ำของแร็กเกตหางหรือไม่?
Anonim

การเพิ่มประสิทธิภาพการเรียกซ้ำ 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.