متدهای بازگشتی در #c
شناسه پست: 1977
بازدید: 1137

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

این مقاله، سرفصلی از دوره آموزشی زیر میباشد:

اگر می خواهید محتویات کامل این دوره را ببینید ، می توانید بر روی لینک مبانی #c کلیک کنید.

اگر میخواهید سورس مثالهای این مقاله را دانلود کنید بر روی لینک سورس متدهای بازگشتی در #c کلیک کنید.

حالا بازگشت چیست؟

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

مثال 1: یک برنامه بنویسید که جمع تمام اعداد از n تا m را به صورت بازگشتی محاسبه کند:

بازگشت در #c

توضیح کد

متد CalculateSumRecursively، متد بازگشتی ما است که جمع اعداد از n تا m را محاسبه میکند. اولین کاری که باید انجام دهیم این است که متغیر sum را برابر با n قرار دهیم. سپس بررسی میکنیم که آیا متغیر n کوچکتر از متغیر m است یا نه. اگر اینچنین باشد سپس مقدار n را 1 واحد افزایش میدهیم و سپس متغیر sum را با نتیجه اجرای مجدد همین متد اما اینبار با افزودن یک واحد به n جمع میکنیم. اما اگر اینچنین نباشد سپس مقدار متغیر درون sum را برمیگردانیم.

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

مثالمان را در نمودار زیر ببینیم:

متد بازگشتی در #c

مثال بعدی

با مثال 2، کمی بیشتر تمرین کنیم. یک برنامه بنویسید که تعداد دفعاتی که عدد میتواند به صورت مکرر بر 2 تقسیم شود و باقیمانده صفر شود را در خروجی چاپ کند:

نتیجه گیری

عالی.

حالا ما بازگشت و متدهای بازگشتی را یاد گرفتیم.

در مقاله بعدی، ما در مورد آرایه ها در #c، نحوه استفاده از آنها و انواع آرایه ها صحبت میکنیم.

نویسنده

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