CodeGym /בלוג Java /Random-HE /ג'אווה רקורסיה
John Squirrels
רָמָה
San Francisco

ג'אווה רקורסיה

פורסם בקבוצה

מהי ג'אווה רקורסיה?

התרחיש שבו פונקציה או שיטה מתקשרת לעצמה ידוע בתור רקורסיה ופונקציה או שיטה כזו ידועה בתור פונקציה רקורסיבית או שיטה רקורסיבית. גישה זו משמשת תמיד כדי לפרק בעיות מורכבות לבעיות פשוטות וקלות יותר לכתיבה. דוגמה פשוטה היא להציב שתי מראות אחת מול השנייה והן יתחילו לשקף אחת את השנייה באופן רקורסיבי שניתן לראות בקלות.

רקורסיה עקיפה

הדוגמה שלמעלה מייצגת את הרקורסיה העקיפה , כלומר, פונקציה אחת הקוראת לפונקציה שתיים ופונקציה שתיים קוראת לפונקציה אחת.

רקורסיה ישירה

כאשר שיטה קוראת לעצמה שוב ושוב, היא נקראת רקורסיה ישירה .

מצב עצירה

עכשיו אתה תחשוב אם שיטה קוראת לעצמה שוב ושוב אז בטוח שהיא תתמודד עם שגיאת 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, וכן הלאה, עד שתנאי העצירה הוא met, שהוא הערך של 0. אותו הדבר קורה כאשר שינינו את הערך מ-5 ל-10.

יתרונות וחסרונות של רקורסיה

קוד רקורסיבי הוא פשוט לכתיבה, ניפוי באגים ותחזוקה, וזה חוסך זמן. אבל מצד שני, בכל קריאה הזיכרון נצרך עבור המשתנים, ובגלל זה יכול להיגמר לנו הזיכרון.

סיכום

אנו מקווים שאתה מבין את הרקורסיה של Java וכיצד ליישם אותה, כמו גם את היתרונות והחסרונות שלה. אל תהסס להתאמן ולחזור בכל פעם שתזדקק לסיוע נוסף. למידה מהנה!
הערות
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION