بازگشت (Recursion) به برنامهای گفته میشود که خودش را فراخوانی میکند تا مسئلهای حل شود.
پشته در بازگشت:
- هر فراخوانی تابع در Call Stack ذخیره میشود
- زمانی که فراخوانی داخلی تمام شد، کنترل به فراخوانی قبلی باز میگردد
- بنابراین بازگشت نمایشی از کاربرد پشته در حافظه است
محاسبه فاکتوریل n!:
factorial(3)
= 3 * factorial(2)
= 3 * (2 * factorial(1))
= 3 * (2 * (1 * factorial(0)))
= 3 * 2 * 1 * 1 = 6
هر فراخوانی در پشته سیستم نگه داشته میشود تا نتیجه برگشت داده شود.
- هر فراخوانی تابع
factorialروی پشته سیستم ذخیره میشود - وقتی
n <= 1رسیدیم، بازگشت شروع میشود - مقادیر مرحله به مرحله از پشته خارج میشوند و ضرب میشوند
- نمایش
EnteringوReturningنشان میدهد که چگونه پشته عمل میکند
./05_recursive_subroutines 3خروجی نمونه:
6