หัวข้อ
- #ฟังก์ชันเรียกซ้ำ
- #TCO
- #การเรียกซ้ำแบบหาง
สร้าง: 2024-10-12
สร้าง: 2024-10-12 18:47
ขณะที่กำลังศึกษาการทดสอบการเขียนโค้ดและการเพิ่มเอฟเฟ็กต์แอนิเมชันลงในข้อความ
ระหว่างเขียนฟังก์ชันแบบเรียกซ้ำ ฉันได้เรียนรู้แนวคิด TCO ด้วยความช่วยเหลือของ AI
การเพิ่มประสิทธิภาพการเรียกซ้ำแบบหางช่วยป้องกันการล้นสแต็กที่เกิดจากการเรียกซ้ำและทำให้การใช้หน่วยความจำมีประสิทธิภาพมากขึ้น
ใน JavaScript มีการระบุไว้ในโหมด strict ของ ES6 แต่ดูเหมือนว่าเบราว์เซอร์ที่รองรับยังไม่มากนัก
การเรียกซ้ำแบบทั่วไป
การเรียกซ้ำแบบหาง
วิธีการที่การคำนวณครั้งสุดท้ายของฟังก์ชันคือการเรียกฟังก์ชันแบบเรียกซ้ำเรียกว่าการเรียกซ้ำแบบหาง
ไม่จำเป็นต้องใช้เฟรมสแต็กของฟังก์ชันจึงช่วยเพิ่มประสิทธิภาพการใช้หน่วยความจำ!
วิธีการใช้การเรียกซ้ำแบบหางใน JavaScript คือการใช้เทคนิค trampoline
ในวิธีนี้ ฟังก์ชัน factorialTCO จะส่งคืนฟังก์ชันแทนที่จะส่งคืนผลลัพธ์โดยตรง
ฟังก์ชัน trampoline จะดำเนินการฟังก์ชันที่ส่งคืนเหล่านั้นต่อไปจนกว่าจะได้ผลลัพธ์สุดท้าย
มันเป็นเทคนิคที่สำคัญในโปรแกรมเชิงฟังก์ชัน น่าสนใจตรงที่แก้ปัญหาข้อเสียของฟังก์ชันแบบเรียกซ้ำทั่วไป (การล้นสแต็ก) ความจริงแล้ว ฉันไม่เข้าใจโดยสัญชาตญาณเมื่อดูเพียงแค่โค้ด ดังนั้นฉันจะต้องค้นคว้าเพิ่มเติมอีกครั้ง
ความคิดเห็น0