تابع بازگشتی چیست ؟

در این مقاله به بررسی تابع بازگشتی می پردازیم و شاید سوال شما این باشد که تابع بازگشتی چیست ؟ در ادامه به سوال هایی که ممکن است درباره تابع بازگشتی (recursive) پیش آید را پاسخ خواهیم داد در ادامه با ما همراه باشید تا مفهوم تابع بازگشتی چیست ؟ را یاد گیرید.

تابع بازگشتی (recursive) چیست ؟

اگر در یک تابع از خود آن تابع دوباره استفاد شود به آن تابع تابع بازگشتی یا recursive می گویند خیلی از مشکلات برنامه نویسی که با تکنیک های مختلف حل می شود بهتر است با تابع بازگشتی حل شود.ساده ترین مثال تابع بازگشتی (Recursive) فاکتوریل است اگر فاکتوریل عدد 5 را در نظر بگیریم که 120 می شود و شامل اعداد 5 * 4 * 3 * 2 * 1 است اگر متوجه شده باشید فاکتوریل از خود آن عدد تا عدد یک است پس می شود می توان براساس فرمول n-1 پیش رفت n عدد ما می شود و در هربار باید یکی از آن کم شود.
کد زیر را در نظر بگیرید

در بالا ما یک متد به نام factorial تعریف کردیم در کمی پایین تر آن همان متد را دوباره صدا زدیم ! یعنی هر بار نتیجه هر فاکتوریل را در تابع دوباره صدا زدیم به این شکل همانند یک حلقه عمل خواهد کرد و تا زمانی که شرط برقرار باشد تابع خودش را صدا می کتد.
یکسری سوال جالب پیش می آید که مزایا و معایب استفاده از  تابع بازگشتی (recursive) چیست ؟
معایت

آیا استفاده از تابع بازگشتی (recursive) باعث افزایش سرعت می شود ؟

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

آیا استفاده از تابع بازگشتی (recursive) باعث کاهش استفاده از حافظه می شود ؟

در جواب این سوال هم باید گفت خیر ! زیرا به خاطر استفاده از stack حافظه بسیاز زیادی می برد.

چرا از Recursive استفاده می کنیم ؟

بعضی مواقع نوشتن کدهای recursive خیلی ساده تر از نسخه غیر recursive آن است ! شما با کمترین کد بیشترین کارایی را خواهید گرفت البته از نظر سادگی کد ولی پشت ماجرا cpu و حافظه بسیار درگیر خواهند بود.
مزایا
در مواقع فقط سادگی کد و هیچگونه مزایای خاص حافظه ای و cpu ای ندارد ولی در سوال های تیزهوشان حتما باید به recursive تسلط کافی داشته باشید !

تابع بازگشتی در مواقع از سه چیز تشکیل می شود

کد کوتاه تر+ ساده کردن محاسبات ریاضی + کمی کند تر
 
 
این مقاله نیز به پایان رسید انشالله مفید واقع شده باشد.
موفق و پیروز باشید.

مطالعه بیشتر