CodeGym /وبلاگ جاوا /Random-FA /بازگشت جاوا
John Squirrels
مرحله
San Francisco

بازگشت جاوا

در گروه منتشر شد

جاوا بازگشتی چیست؟

سناریویی که در آن یک تابع یا متد خود را فراخوانی می کند به عنوان بازگشت و چنین تابع یا روشی به عنوان تابع بازگشتی یا روش بازگشتی شناخته می شود. این رویکرد همیشه برای شکستن مسائل پیچیده به یک ساده و نوشتن ساده تر استفاده می شود. یک مثال ساده این است که دو آینه را در مقابل یکدیگر قرار دهید و آنها شروع به انعکاس یکدیگر می کنند که به راحتی می توانید آن را ببینید.

بازگشت غیر مستقیم

مثال بالا نشان دهنده بازگشت غیرمستقیم است ، یعنی تابع یک تابع دو را فراخوانی می کند و تابع دو تابع یک را فراخوانی می کند.

بازگشت مستقیم

هنگامی که یک متد بارها و بارها خود را فراخوانی می کند، بازگشت مستقیم نامیده می شود .

وضعیت توقف

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

مثال بازگشتی


class Recursion {

    static int factorial( int n ) {
        // base condition or termination condition
        if (n != 0)  
        // here we are calling the recursive method
            return n * factorial(n-1); 
        else
            return 1;
    }

    public static void main(String[] args) {
        // initializing the variables
        int number = 5, result;
        result = factorial(number);
        System.out.println(number + " factorial = " + result);
        
        // changing the value from 5 to 10
        number = 10;
        result = factorial(number); // recursive function call
        System.out.println(number + " factorial = " + result);
    }
}

خروجی نمونه

5 فاکتوریل = 120 10 فاکتوریل = 3628800
در این مثال روش بازگشتی، یک تابع فاکتوریل داریم که از روش اصلی فراخوانی شده است. مقدار 5 را پاس دادیم تا ببینیم فاکتوریل آن چیست، یعنی 120. این تابع فاکتوریل با عبور از مقدار 4، دوباره خود را فراخوانی می کند، که دوباره مقدار 3 را فراخوانی می کند و پاس می دهد و به همین ترتیب، تا زمانی که شرط توقف شود. met که مقدار 0 است. وقتی مقدار را از 5 به 10 تغییر دادیم همین اتفاق می افتد.

مزایا و معایب Recursion

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

نتیجه

امیدواریم که جاوا بازگشتی و نحوه پیاده سازی آن و همچنین مزایا و معایب آن را درک کرده باشید. با خیال راحت تمرین کنید و هر زمان که به کمک بیشتری نیاز داشتید برگردید. یادگیری مبارک!
نظرات
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION