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


Problem

1/12

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

Theory Click to read/hide

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

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

در برنامه نویسی به این تکنیک بازگشتی می گویند.

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

بازگشتی رویه ای (تابع) است که مستقیماً یا از طریق رویه ها و توابع دیگر خود را فراخوانی می کند.
مثالی از یک رویه بازگشتی:

void Rec(int a)
{
  if (a>0) { Rec(a-1);
  Console.WriteLine(a);
}

از نظر شماتیک، کار بازگشت را می توان به صورت فلوچارت نشان داد.

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

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

Problem

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