php

جلسه ۳۵: توابع قسمت ۶ در php

توابع بازگشتی

در این بخش می خواهیم با استفاده از مثال فاکتوریل مفهوم توابع بازگشتی را توضیح دهیم. سرفصل مباحث این جلسه به شرح زیر می باشد:

  • تابع بازگشتی چیست؟
    • مثال
    • توضیح جواب
  • بازگشت یا تکرار؟

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

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

مثال

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

<?php
function factorial($n)
{
    if ($n == 1 || $n == 0)
    { //base case
        return 1;
    }
    else
    {
        return $n * factorial($n - 1); //function calls itself
        
    }
}

echo factorial(4); //calling the function with 4 as the argument

?>

این یک برنامه بازگشتی کلاسیک است. این تابع فاکتوریل یک عدد را محاسبه می کند. توجه: فاکتوریل n که به صورت !n نوشته می شود، حاصلضرب تمامی اعداد از ۱ تا n است. بنابراین می توانیم بگوییم:

۴! = ۴ * ۳ * ۲ * ۱

توضیح مثال

بیایید ببینیم با فراخوانی فاکتوریل factorial(4) چه اتفاقی می افتد.

  • در خط یازدهم تابع factorial(4) فراخوانی می شود.
    • چون n=4 است، در تابع factorial وارد بخش else می شویم و در خط هفتم مقدار ۴*factorial(n-1) را برمی گردانیم.
    • سپس factorial(3) فراخوانی می شود.
      • باتوجه به اینکه n=3 است، وارد بخش else می شویم و در خط هفتم مقدار factorial(n-1)*3 را بر می گردانیم.
      • سپس factorial(2) فراخوانی می شود.
        • باتوجه به اینکه n=2 است، وارد بخش else می شویم و در خط هفتم مقدار factorial(n-1)*2 را بر می گردانیم.
        • سپس factorial(1) فراخوانی می شود پس factorial(2) می تواند ۲…۱*۲ را برگرداند.
      • factorial(2) مقدار ۲ را برمی گرداند پس factorial(3) نیز می تواند مقدار ۶…۲*۳ را برگرداند.
    • facttoial(3) مقدار ۶ را برمی گردانند پس factorial(4) می تواند ۲۴…۶*۴ را برگرداند.

بیشتر مواقع، توابع بازگشتی جواب ساده ای هستند که به راحتی نوشته می شوند.

  • مشکل استفاده از توابع بازگشتی این است که هزینه بالایی دارد.

با هربار فراخوانی تابع، تابع در حافظه قرار می گیرد. از آنجا که تا زمانی که از n به ۱ برسیم از تابع خارج نمی شویم. n تا تابع در حافظه می ماند. این برای فاکتوریل ساده ای مثل factorial(4) مشکلی ندارد اما سایر عملکردها ممکن است میزان زیادی از حافظه را درگیر کنند.

بازگشت یا تکرار؟

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

خب، این تمامی توضیحات در مورد بازگشت بود. برای یادگیری بهتر، سوال های موجود در بخش بعدی را جواب دهید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا