מהי ג'אווה רקורסיה?
התרחיש שבו פונקציה או שיטה מתקשרת לעצמה ידוע בתור רקורסיה ופונקציה או שיטה כזו ידועה בתור פונקציה רקורסיבית או שיטה רקורסיבית. גישה זו משמשת תמיד כדי לפרק בעיות מורכבות לבעיות פשוטות וקלות יותר לכתיבה. דוגמה פשוטה היא להציב שתי מראות אחת מול השנייה והן יתחילו לשקף אחת את השנייה באופן רקורסיבי שניתן לראות בקלות.רקורסיה עקיפה
הדוגמה שלמעלה מייצגת את הרקורסיה העקיפה , כלומר, פונקציה אחת הקוראת לפונקציה שתיים ופונקציה שתיים קוראת לפונקציה אחת.רקורסיה ישירה
כאשר שיטה קוראת לעצמה שוב ושוב, היא נקראת רקורסיה ישירה .מצב עצירה
עכשיו אתה תחשוב אם שיטה קוראת לעצמה שוב ושוב אז בטוח שהיא תתמודד עם שגיאת 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.
GO TO FULL VERSION