Skip to main content

การโทรแบบเรียกซ้ำคืออะไร?

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

แนวคิดของการเรียกซ้ำอาจเป็นตัวอย่างที่ดีที่สุดผ่านการใช้ตัวอย่างสมมติว่าหลังคากำลังใช้งูสวัดใหม่กับบ้านในการเริ่มต้นเขาจะต้องพกมัดงูสวัดไปที่หลังคาเมื่อเขาตอกตะปูชุดแรกในสถานที่เขาจะต้องปีนลงบันไดเรียกมัดอีกชุดแล้วตอกตะปูเข้าที่กระบวนการยังคงดำเนินต่อไปเป็นชุดของ GO ดึงกลับไปจนกว่าจะมีการใช้แผ่นม้วนสุดท้ายณ จุดนั้นหลังคามีอิสระที่จะย้ายไปยังงานต่อไปหรือกลับบ้าน

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

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

โปรแกรมเมอร์ที่มีประสบการณ์อาจรับรู้ถึงความคล้ายคลึงกันระหว่างการโทรแบบเรียกซ้ำและ A FOR หรือในขณะที่ลูปตัวอย่างเช่นหากเป้าหมายคือการค้นหาจำนวนสินค้าคงคลังทั้งหมดของหุ้นทั้งหมดที่มีหมายเลขชิ้นส่วนมากกว่า 999, A สำหรับการวนรอบบอกโปรแกรมเพื่อค้นหาอินสแตนซ์ที่มีคุณสมบัติทั้งหมดเงื่อนไขถูกต้องอาจมีการเรียกร้องการเรียกซ้ำเพื่อรวมคุณสมบัติบางอย่างของลูปเหล่านี้เข้ากับคำสั่ง if-then-else;หากเงื่อนไขนี้เป็นจริงให้ทำเช่นนี้หรือทำสิ่งที่แตกต่างถ้าเงื่อนไขเป็นเท็จโดยทั่วไปแล้วการเรียกซ้ำจะช่วยให้รหัสขนาดกะทัดรัดมากขึ้นและช่วยให้ปัญหาถูกส่งผ่านไปยังฟังก์ชั่นใกล้กับจุดที่จำเป็น