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

تفاوت تابع بازگشتی 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 به‌جای هم در نظر گرفته می‌شوند

اگر این دو مفهوم به‌درستی درک شوند، یادگیری الگوریتم‌ها و ساختارهای پیشرفته بسیار ساده‌تر خواهد شد. سعی کردم به ساده ترین شکل ممکن این ها رو توضیح بدم و همچنین کد کامل این مطلب رو میتونید در این جا پیدا کنید .

موفق باشید 😎

دیدگاه‌ها ۰
ارسال دیدگاه جدید