Module: زیر برنامه ها بازگشت


Problem

1/8

بازگشت. این چیه؟

Theory Click to read/hide

یک رویه یا تابع ممکن است شامل فراخوانی به رویه دیگری در آن باشد. از جمله، زیربرنامه می تواند خود را فراخوانی کند. در این مورد، کامپیوتر اهمیتی نمی دهد. او همچنین مانند همیشه دستوراتی را که با آنها ملاقات کرده است به طور مداوم از بالا به پایین اجرا می کند.

اگر ریاضیات را به خاطر دارید، در آنجا می توانید اصل استقراء ریاضیرا ببینید. به شرح زیر است:

یک عبارت خاص برای هر n if
طبیعی صادق است     1. برای n = 1 و
معتبر است     2. از اعتبار عبارت برای هر طبیعی دلخواه n = k  نتیجه می شود که برای n = k+1
صادق است.
در برنامه نویسی به این تکنیک recursion
می گویند
بازگشت روشی برای تعریف مجموعه ای از اشیا بر اساس خود مجموعه، بر اساس موارد پایه ساده داده شده است.


بازگشتی همچنین رویه (تابع) نامیده می‌شود که مستقیماً یا از طریق سایر رویه‌ها و توابع خود را فراخوانی می‌کند
نمونه ای از یک روش بازگشتی: <پیش> روش Rec(a: integer); شروع     اگر > 0 سپس         Rec(a - 1);     نوشتن (الف)؛ پایان؛ به طور شماتیک، کار بازگشت را می توان با یک نمودار جریان نشان داد


 
رویه Rec() با پارامتر 3 اجرا می شود. سپس در داخل رویه با پارامتر 3، رویه با پارامتر 2 فراخوانی می شود و به همین ترتیب تا زمانی که رویه با پارامتر 0 فراخوانی شود. پارامتر 0 فراخوانی می شود، فراخوانی بازگشتی قبلاً اتفاق نمی افتد و رویه با پارامتر 0 عدد 0 را چاپ می کند و خاتمه می یابد. سپس کنترل به رویه با پارامتر 1 برمی گردد، همچنین با چاپ عدد 1 کار خود را به پایان می رساند و به همین ترتیب. قبل از رویه با پارامتر 3. 

تمام رویه های فراخوانی شده تا زمانی که کار خود را کامل کنند در حافظه ذخیره می شوند. تعداد رویه‌های همزمان عمق بازگشت نامیده می‌شود.

Problem

با استفاده از روش تجزیه، خطوط لازم را به برنامه اصلی اضافه کنید.
درک کنید که چرا برنامه چنین پاسخی می دهد