5 תשובות
אני מניח שסדר הפעולות יהיה כך:
1. מקרה בסיס: אם a = 1 החזר את b.
2. הקטנת הבעיה: אחרת - חשב (a-1)*b
3. קומבינציה של תתי הבעיות: הוסף את b לתוצאה מהפעולה הקודמת והחזר את הערך
כל זה תחת הנחה שהכפל הוא בין שני מספרים טבעיים. לא ראיתי את נתוני השאלה.
1. מקרה בסיס: אם a = 1 החזר את b.
2. הקטנת הבעיה: אחרת - חשב (a-1)*b
3. קומבינציה של תתי הבעיות: הוסף את b לתוצאה מהפעולה הקודמת והחזר את הערך
כל זה תחת הנחה שהכפל הוא בין שני מספרים טבעיים. לא ראיתי את נתוני השאלה.
המקרה בסיס:
a=1 להחזיר את b
או
b=1 להחזיר את a
לבחירתך
הפעולה עצמה זה להחזיר את b ועוד הפונקציה של המשתנים a-1 ו-b (בהתאמה למה שבחרת)
כפל זה הרי סכום איברים מאותו סוג מספר פעמים.
נגיד 3*4
זה בעצם 3+3+3+3
או 4+4+4
a=1 להחזיר את b
או
b=1 להחזיר את a
לבחירתך
הפעולה עצמה זה להחזיר את b ועוד הפונקציה של המשתנים a-1 ו-b (בהתאמה למה שבחרת)
כפל זה הרי סכום איברים מאותו סוג מספר פעמים.
נגיד 3*4
זה בעצם 3+3+3+3
או 4+4+4
שואל השאלה:
אני צריכה לכתוב פעולה שיעשה a*b עם רקורסיה ולא הבנתי איך זה אמור להראות בכלל אפשר עזרה?
אני צריכה לכתוב פעולה שיעשה a*b עם רקורסיה ולא הבנתי איך זה אמור להראות בכלל אפשר עזרה?
אנונימית
רקורסיה זה בעצם אלגוריתם שנועד לפתור בצורה נוחה בעיה שאין לה פתרון יעיל.
זו פונקציה שקוראת לעצמה על ידי בדיקה של מקרה יותר קטן.
יש מקרה בסיס/תנאי עצירה ששם הפונקציה תפסיק את הלולאה שהיא נכנסת אליה.
יש את החלוקה למקרה קטן יותר ובדיקה שלו בנפרד (כלומר - הרצה של הפונקציה על המקרה הקטן יותר)
ויש את ההחזרה של הפונקציה או פעולה כללית שהיא עושה.
זה מאוד נוח לפתרון בעיות כשיש המון אפשרויות למשל "בעיית הסוכן נסיעות" שאי אפשר לפתור את זה בלולאות רגילות או שזה לא יהיה יעיל בכלל.
חשוב לדעת שרקורסיה זה משהו שלא יעיל בתכנות (לא מבחינת זכרון ולא מבחינת זמן ריצה) אבל לפעמים אין ברירה אלא להשתמש.
קצת קשה להסביר את זה, אבל אם יהיו שאלות יותר ספציפיות את יותר ממוזמנת לשאול בפרטי ואשתדל להרחיב יותר איפה שצריך :)
זו פונקציה שקוראת לעצמה על ידי בדיקה של מקרה יותר קטן.
יש מקרה בסיס/תנאי עצירה ששם הפונקציה תפסיק את הלולאה שהיא נכנסת אליה.
יש את החלוקה למקרה קטן יותר ובדיקה שלו בנפרד (כלומר - הרצה של הפונקציה על המקרה הקטן יותר)
ויש את ההחזרה של הפונקציה או פעולה כללית שהיא עושה.
זה מאוד נוח לפתרון בעיות כשיש המון אפשרויות למשל "בעיית הסוכן נסיעות" שאי אפשר לפתור את זה בלולאות רגילות או שזה לא יהיה יעיל בכלל.
חשוב לדעת שרקורסיה זה משהו שלא יעיל בתכנות (לא מבחינת זכרון ולא מבחינת זמן ריצה) אבל לפעמים אין ברירה אלא להשתמש.
קצת קשה להסביר את זה, אבל אם יהיו שאלות יותר ספציפיות את יותר ממוזמנת לשאול בפרטי ואשתדל להרחיב יותר איפה שצריך :)
רקורסיה היא גישה לפתרון בעיות שכוללת שלושה שלבים עיקריים:
1. מקרה בסיס. מקרה בו פתרון הבעיה ברור ומיידי.
2. במידה והבעיה גדולה מבמקרה הבסיס יש להקטין את הבעיה לאוסף של תתי בעיות.
3. קומבינציה של פתרון תתי הבעיות המעט קטנות יותר בשביל פתרון הבעיה הגדולה.
1. מקרה בסיס. מקרה בו פתרון הבעיה ברור ומיידי.
2. במידה והבעיה גדולה מבמקרה הבסיס יש להקטין את הבעיה לאוסף של תתי בעיות.
3. קומבינציה של פתרון תתי הבעיות המעט קטנות יותר בשביל פתרון הבעיה הגדולה.
באותו הנושא: