การเรียกซ้ำบ่อยครั้งก็ชัดเจนน้อยกว่า ชัดเจนน้อยกว่าการบำรุงรักษายาก
หากคุณเขียนfor(i=0;i<ITER_LIMIT;i++){somefunction(i);}
ในโฟลว์หลักคุณทำให้ชัดเจนว่าคุณกำลังเขียนลูป ถ้าคุณเขียนsomefunction(ITER_LIMIT);
คุณไม่ได้ทำให้ชัดเจนว่าจะเกิดอะไรขึ้น การดูเนื้อหาเท่านั้น: การsomefunction(int x)
โทรนั้นsomefunction(x-1)
จะบอกคุณว่าในความเป็นจริงเป็นการวนซ้ำโดยใช้การวนซ้ำ นอกจากนี้คุณไม่สามารถวางเงื่อนไขการหลบหนีได้อย่างง่ายดายด้วยbreak;
การทำซ้ำครึ่งทางคุณต้องเพิ่มเงื่อนไขที่จะผ่านไปตลอดทางหรือไม่ก็ยกเว้น (และข้อยกเว้นเพิ่มความซับซ้อนอีกครั้ง ... )
ในสาระสำคัญถ้ามันเป็นตัวเลือกที่ชัดเจนระหว่างการทำซ้ำและการเรียกซ้ำให้ทำสิ่งที่ใช้งานง่าย หากการวนซ้ำทำได้อย่างง่ายดายการประหยัด 2 บรรทัดจะไม่คุ้มกับอาการปวดหัวที่อาจเกิดขึ้นในระยะยาว
แน่นอนถ้ามันช่วยให้คุณประหยัด 98 บรรทัดนั่นเป็นเรื่องที่แตกต่างอย่างสิ้นเชิง
มีสถานการณ์ที่การเรียกซ้ำเป็นไปอย่างสมบูรณ์แบบและพวกเขาก็ไม่ใช่เรื่องแปลก การสำรวจเส้นทางของโครงสร้างต้นไม้เครือข่ายที่เชื่อมโยงหลายจุดโครงสร้างที่สามารถมีประเภทของตัวเองอาร์เรย์หลายมิติแบบขรุขระไม่ว่าจะเป็นเวกเตอร์ที่ตรงไปตรงมาหรืออาร์เรย์ของมิติคงที่ หากคุณสำรวจเส้นทางตรงที่รู้จักให้ทำซ้ำ หากคุณดำน้ำในสิ่งที่ไม่รู้จัก
โดยพื้นฐานแล้วหากsomefunction(x-1)
ต้องถูกเรียกจากภายในตัวเองมากกว่าหนึ่งครั้งต่อระดับให้ลืมการทำซ้ำ
... การเขียนฟังก์ชั่นซ้ำ ๆ สำหรับงานที่ทำได้ดีที่สุดโดยการเรียกซ้ำเป็นไปได้ แต่ไม่น่าพอใจ เมื่อใดก็ตามที่คุณต้องการใช้สิ่งที่คุณต้องชอบint
stack<int>
ฉันทำแบบฝึกหัดมากกว่าครั้งเดียวเพื่อการใช้งานจริง ฉันสามารถรับรองคุณได้เมื่อคุณเผชิญกับงานดังกล่าวคุณจะไม่มีข้อสงสัยเหมือนอย่างที่คุณแสดงออกมา