ฟังก์ชันแบบเรียกซ้ำเร็วกว่าการวนซ้ำหรือไม่

สารบัญ:

ฟังก์ชันแบบเรียกซ้ำเร็วกว่าการวนซ้ำหรือไม่
ฟังก์ชันแบบเรียกซ้ำเร็วกว่าการวนซ้ำหรือไม่
Anonim

ฟังก์ชัน recursive ทำงานเร็วกว่าฟังก์ชันแบบวนซ้ำมาก สาเหตุเป็นเพราะว่าในแต่ละรายการ จำเป็นต้องมี CALL ไปยังฟังก์ชัน st_push และอีกฟังก์ชันหนึ่งไปยัง st_pop. ในอดีต คุณจะมีเพียง CALL แบบเรียกซ้ำสำหรับแต่ละโหนด นอกจากนี้ การเข้าถึงตัวแปรบน callstack นั้นรวดเร็วอย่างเหลือเชื่อ

เรียกซ้ำหรือวนซ้ำเร็วขึ้นหรือไม่

Memoization ทำให้การเรียกซ้ำเป็นเรื่องที่น่าพึงพอใจ แต่ ดูเหมือนการวนซ้ำจะเร็วกว่าเสมอ แม้ว่าวิธีการเรียกซ้ำจะทำงานช้ากว่า แต่บางครั้งพวกเขาก็ใช้โค้ดน้อยกว่าการวนซ้ำ และสำหรับหลายๆ วิธีก็เข้าใจง่าย วิธีการแบบเรียกซ้ำมีประโยชน์สำหรับงานเฉพาะบางอย่าง เช่น การสำรวจโครงสร้างต้นไม้

โซลูชันแบบวนซ้ำเร็วกว่าโซลูชันแบบเรียกซ้ำหรือไม่

อย่างไรก็ตาม วิธีแก้ปัญหาแบบวนซ้ำคือ มักจะเร็วกว่าวิธีแก้ปัญหาแบบเรียกซ้ำ เมื่อพูดถึงความเร็ว … ในภาษาการเขียนโปรแกรมมาตรฐาน ซึ่งคอมไพเลอร์ไม่มีการปรับให้เหมาะสมแบบเรียกซ้ำส่วนท้าย การโทรแบบเรียกซ้ำมักจะช้ากว่าการวนซ้ำ

การเรียกซ้ำง่ายกว่าการวนซ้ำหรือไม่

ความจริงก็คือการเรียกซ้ำนั้นไม่ค่อยเป็นวิธีที่มีประสิทธิภาพมากที่สุดในการแก้ปัญหา และ การวนซ้ำนั้นมีประสิทธิภาพมากกว่าเกือบทุกครั้ง นี่เป็นเพราะว่ามักจะมีค่าใช้จ่ายที่เกี่ยวข้องกับการเรียกซ้ำมากกว่า การโทรเนื่องจากมีการใช้สแต็กการโทรอย่างหนักในระหว่างการเรียกซ้ำ

การเรียกซ้ำมีข้อเสียอย่างไร

ข้อเสียของการเรียกซ้ำ

  • ฟังก์ชั่นแบบเรียกซ้ำมักจะช้ากว่าฟังก์ชั่นที่ไม่เรียกซ้ำ
  • อาจต้องใช้พื้นที่หน่วยความจำจำนวนมากเพื่อเก็บผลลัพธ์ขั้นกลางบนสแต็คระบบ
  • ยากที่จะวิเคราะห์หรือเข้าใจรหัส
  • มันไม่ได้มีประสิทธิภาพมากขึ้นในแง่ของความซับซ้อนของพื้นที่และเวลา