تفاوت تابع بازگشتی Recursive و بازگرداندن مقدار Return


در بسیاری از منابع آموزش برنامهنویسی، مفاهیم return و recursive بهدرستی از هم تفکیک نمیشوند و همین موضوع باعث سوءبرداشت برای برنامهنویسان تازهکار میشه ، که در خواندن داکیومنت ها و یا دیدن فیلم های آموزشی برنامه نویسی ، تابع بازگشتی یه مقدار گیج کننده میشه پس ما
در این مطلب، خیلی ساده و بدون پیچیدگی، تفاوت این دو مفهوم را بررسی میکنیم.
تفاوت تابع بازگشتی (Recursive) و بازگرداندن مقدار (Return)


تابع چیست؟
تابع مجموعهای از دستورات است که یک وظیفهی مشخص را انجام میدهد.
وقتی تابعی را صدا میزنیم، از آن انتظار داریم کاری انجام دهد؛ گاهی فقط یک عملیات، و گاهی تولید یک نتیجه.
توابع خلاصه هم داریم ، که به اون ها Extension Function میگیم . پیشنهاد میکنم بعد از این اموزش به این مطلب نگاهی بندازید : مشاهده این مطلب
مفهوم Return (بازگرداندن نتیجه)
وقتی میگوییم یک تابع return دارد، یعنی:
- تابع پس از اجرا، یک مقدار تولید میکند
- این مقدار به جایی که تابع صدا زده شده بازگردانده میشود
- با اجرای
return، اجرای تابع متوقف میشود
مثال تابع بدون return
fun sayHello() {
println("سلام دنیا")
}
این تابع:
- فقط یک کار انجام میدهد
- مقداری برنمیگرداند
- خروجی آن فقط چاپ در کنسول است
مثال تابع دارای return
fun sum(a: Int, b: Int): Int {
return a + b
}
استفاده :
val result = sum(3, 5) println(result)
در اینجا:
- تابع مقدار 8 را بازمیگرداند
- میتوان خروجی تابع را ذخیره یا در جای دیگری استفاده کرد
مفهوم Recursive (بازگشتی)
تابع بازگشتی، تابعی است که خودش را صدا میزند.
این نوع توابع معمولاً در الگوریتمها و محاسبات تکرارشونده استفاده میشوند.
نکتهی مهم:
تابع بازگشتی باید حتماً شرط توقف داشته باشد.
در غیر این صورت، تابع به صورت بینهایت اجرا میشود و برنامه با خطا مواجه خواهد شد.
مثال تابع بازگشتی (محاسبه فاکتوریل)
fun factorial(n: Int): Int {
if (n == 1) {
return 1
}
return n * factorial(n - 1)
}
استفاده:
val result = factorial(5) println(result)
در این مثال:
- تابع
factorialخودش را صدا میزند - هر بار مقدار
nکمتر میشود - وقتی به شرط توقف برسد (
n == 1)، اجرا متوقف میشود
تفاوت اصلی Return و Recursive
| مفهوم | توضیح |
|---|---|
| Return | بازگرداندن نتیجه از داخل تابع |
| Recursive | صدا زدن خود تابع برای حل مسئله |
| Return نوع تابع نیست | ابزار خروجی تابع است |
| Recursive جایگزین return نیست | یک روش اجراست |
جمعبندی
- return یعنی بازگرداندن نتیجه
- recursive یعنی حل مسئله با صدا زدن دوبارهی تابع
- تابع بازگشتی هم میتواند return داشته باشد و هم نداشته باشد
- اشتباه رایج این است که recursive و return بهجای هم در نظر گرفته میشوند
اگر این دو مفهوم بهدرستی درک شوند، یادگیری الگوریتمها و ساختارهای پیشرفته بسیار سادهتر خواهد شد. سعی کردم به ساده ترین شکل ممکن این ها رو توضیح بدم و همچنین کد کامل این مطلب رو میتونید در این جا پیدا کنید .
موفق باشید 😎






