PDA

View Full Version : توابع Recursion (بازگشتی)



masooodj67
یک شنبه 22 بهمن 1391, 23:07 عصر
سلام کدی در زیر اومده که بسیار سادست و میخاد که آموزش توابع بازگشتی رو به من بده ولی من return زیر if رو نگرفتم قضیش چیه،آخه break گذاشتم دیدم خوب متد فراخوانی شد و مقدار 3 به متد وارد شد و هر بار در خودش متد فراخوانی شد و به ازای اون به طبع در استک چهار قاب روی هم قرار گرفت ولی بعد که به مقدار صفر متغییرم رسید باید دستور return اجرا میشد با اجرای اون دیدم که به یکباره قسمت زرد رنگ در break به انتهای متدم رفت و با اتمام این قسمت دوباره به قسمت فراخوانی متد که در خود متد آمده آمد و شروع به اجرای دستور نمایشم کرد میخاستم بدونم این return چرا اینجوری کرد؟

ممنون


class Program
{
public void Count(int inval)
{
if (inval == 0)
return;
Count(inval - 1);
Console.WriteLine("{0}", inval);
}
static void Main(string[] args)
{
Program mc = new Program();
mc.Count(3);
Console.ReadKey();
}
}

یونس ابراهیمی
یک شنبه 22 بهمن 1391, 23:23 عصر
سلام دوست عزیز
اینو بخون به نوعی به جوابت میرسی

wolf_majid
دوشنبه 23 بهمن 1391, 07:35 صبح
این return برای خروج اضطراری از متده


و با اتمام این قسمت دوباره به قسمت فراخوانی متد که در خود متد آمده آمد و شروع به اجرای دستور نمایشم کرد
بایدم اینطور باشه
بعد از اینکه 3 بار تابع بازگشت شذ و کار بازگشتیش تموم شد باید 3 بار هم خطوط بعد از فراخوانیش اجرا بشه