CodeGym /จาวาบล็อก /สุ่ม /การเรียกซ้ำของ Java
John Squirrels
ระดับ
San Francisco

การเรียกซ้ำของ Java

เผยแพร่ในกลุ่ม

Java Recursion คืออะไร?

สถานการณ์ที่ฟังก์ชันหรือเมธอดเรียกตัวเองว่าการเรียกซ้ำ และฟังก์ชันหรือเมธอดดังกล่าวเรียกว่าฟังก์ชันแบบเรียกซ้ำหรือวิธีการเรียกซ้ำ แนวทางนี้มักจะใช้เพื่อแยกปัญหาที่ซับซ้อนให้เป็นปัญหาที่ง่ายและเขียนได้ง่ายกว่า ตัวอย่างง่ายๆ คือ วางกระจก 2 บานไว้หน้ากัน จากนั้นกระจกจะเริ่มสะท้อนกันแบบวนซ้ำ ซึ่งคุณสามารถมองเห็นได้ง่าย

การเรียกซ้ำทางอ้อม

ตัวอย่างข้างต้นแสดงถึงการเรียกซ้ำทางอ้อมนั่นคือ ฟังก์ชันหนึ่งเรียกใช้ฟังก์ชันที่สอง และฟังก์ชันที่สอง การเรียกฟังก์ชันหนึ่ง

การเรียกซ้ำโดยตรง

เมื่อเมธอดเรียกตัวเองซ้ำแล้วซ้ำเล่า จะเรียกว่าการ เรียกซ้ำโดยตรง

สภาพการหยุดชะงัก

ตอนนี้คุณจะคิดว่าหากมีการเรียกเมธอดตัวเองซ้ำแล้วซ้ำอีก จะต้องพบกับข้อผิดพลาด Stack Overflow ใช่ คุณพูดถูก เหมือนกับการวนซ้ำแบบไม่มีที่สิ้นสุด มันสามารถไปสู่การเรียกซ้ำแบบไม่มีที่สิ้นสุดได้ เราต้องจัดเตรียมเงื่อนไขพื้นฐานหรือเงื่อนไขการสิ้นสุดเพื่อหยุดการเรียกซ้ำแบบไม่สิ้นสุดนี้ ซึ่งเรียกว่าเงื่อนไขการหยุด และเงื่อนไขนี้จะระบุไว้ในวิธีการเรียกซ้ำเสมอ ซึ่งเราจะเห็นรายละเอียดในตัวอย่างด้านล่าง

ตัวอย่างการเรียกซ้ำ

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 อีกครั้ง และต่อไปเรื่อยๆ จนกว่าเงื่อนไขการหยุดคือ พบซึ่งก็คือค่า 0 สิ่งเดียวกันนี้เกิดขึ้นเมื่อเราเปลี่ยนค่าจาก 5 เป็น 10

ข้อดีและข้อเสียของการเรียกซ้ำ

โค้ดแบบเรียกซ้ำนั้นง่ายต่อการเขียน ดีบัก และบำรุงรักษา ซึ่งช่วยประหยัดเวลา แต่ในทางกลับกัน ในแต่ละการโทร หน่วยความจำจะถูกใช้สำหรับตัวแปร และด้วยเหตุนี้ หน่วยความจำจึงหมด

บทสรุป

เราหวังว่าคุณจะเข้าใจการเรียกซ้ำของ Java และวิธีการใช้งาน รวมถึงข้อดีและข้อเสียของมัน คุณสามารถฝึกฝนและกลับมาได้ทุกเมื่อที่คุณต้องการความช่วยเหลือเพิ่มเติม มีความสุขในการเรียนรู้!
ความคิดเห็น
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION