הגעת רחוק ואתה בדרך הנכונה להבין את שפת לוגו. עליך לתרגל זאת הרבה ולזכור שהדברים שלמדת הם הבסיס של כמעט כל שפת תכנות שקיימת ! לסיום נלמד נושא קשה מאוד שאפילו אנשים מבוגרים מתקשים להבינו. הנושא הוא רקורסיה. רקורסיה הוא מה שקורה כאשר תת-שגרה קוראת לעצמה. בוא נראה דרך אחרת לכתוב את תת-השגרה שבלול:
כדי שבלול
פרמטרים [ אורך ]
קדימה :אורך
ימינה 90
אםאחרת (:אורך>
שבלול (:אורך-2)
] []
ננסה זאת
הביתה
נקהמסך
שבלול 6
בוא ונצייר טבלה שבה ננתח מה קורה כאן:
הערך של אורך |
מה בוצע לפני ה- אםאחרת |
הערך של (:אורך> |
הקריאה ל-שבלול בתוך ה-אםאחרת |
הערות |
6 |
קדימה 6 ימינה 90 |
"אמת" |
שבלול 4 |
אורך = 6, לכן הקריאה ל-שבלול היא עם 4 |
4 |
קדימה 4 ימינה 90 |
"אמת" |
שבלול 2 |
אורך = 4, לכן הקריאה ל-שבלול היא עם 2 |
2 |
קדימה 2 ימינה 90 |
"אמת" |
שבלול 0 |
אורך = 2, לכן הקריאה ל-שבלול היא עם 0 |
0 |
קדימה 0 ימינה 90 |
"שקר" |
|
אין קריאה ל-שבלול בגלל ש-אורך לא גדול מ- |
נסה לצייר טבלה כזאת שמתחילה כאשר קוראים ל-שבלול עם פרמטר
סיכום השיעור
תת-שגרה רקורסיבית היא תת-שגרה אשר בין הפקודות שהיא מבצעת קיימת קריאה אליה עצמה.
מה שחשוב לזכור ברקורסיה, בדומה ללולאת כלעוד, הוא "תנאי העצירה" שלה. תנאי העצירה אומר שבמצב מסויים, תת-השגרה לא תקרא לעצמה, אלא תמשיך בבצוע הפעולות שרשומות אחרי הקריאה (אם יש כאלה. בדוגמא למעלה תנאי העצירה הוא כאשר הביטוי (:אורך>