Module: زیربرنامه های (پایتون). بازگشت


Problem

1/12

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

Theory Click to read/hide

بازگشت

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

اگر ریاضیات را به خاطر دارید، در آنجا می توانید اصل استقراء ریاضیرا ببینید. به شرح زیر است:
برخی از گزاره ها برای هر n if
طبیعی صادق است     1. برای n = 1 و
معتبر است     2. از اعتبار عبارت برای هر طبیعی دلخواه n = k نتیجه می شود که برای n = k + 1 صادق است.

در برنامه نویسی به این تکنیک بازگشت
می گویند  
بازگشت راهی برای تعریف مجموعه ای از اشیاء بر اساس خود مجموعه است، بر اساس داده شده موارد پایه ساده.

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



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

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

Problem

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