מבוא לרקורסיה
חלק מהיחידה לוגיקה וזרימת התוכנית במסלול ה-Dart של Coddy. שיעור 47 מתוך 65.
רקורסיה היא טכניקת תכנות שבה פונקציה קוראת לעצמה כדי לפתור בעיה. חשבו על כך כמו להסתכל בשתי מראות הניצבות זו מול זו — כל השתקפות מכילה גרסה קטנה יותר של אותה תמונה, וכך נוצרת לולאה אינסופית, עד שההשתקפויות נעשות קטנות מכדי לראותן.
כל פונקציה רקורסיבית זקוקה לשני רכיבים חיוניים כדי לפעול כראוי. מקרה הבסיס הוא התנאי שעוצר את הרקורסיה — הוא כמו הנקודה שבה ההשתקפויות במראה נעשות קטנות מכדי להיות חשובות. בלי מקרה בסיס, הפונקציה שלך הייתה קוראת לעצמה לנצח, ובסופו של דבר גורמת לקריסת התוכנית שלך.
השלב הרקורסיבי הוא המקום שבו הפונקציה קוראת לעצמה עם גרסה שונה של הבעיה המקורית. בכל פעם שהפונקציה קוראת לעצמה, עליה לעבוד על גרסה קטנה יותר או פשוטה יותר של הבעיה, ולהתקדם בהדרגה לעבר מקרה הבסיס.
דמיין שאתה מחפש את המפתחות שלך בערמת ניירות. אתה יכול לבדוק את הדף העליון, ואם המפתחות שלך לא נמצאים שם, לעשות את אותו הדבר עם שאר הערמה (שכעת קטנה בדף אחד). תמשיך לחזור על התהליך הזה עד שתמצא את המפתחות שלך או שלא יישארו עוד דפים לבדוק.
הגישה הזו של פירוק בעיה גדולה לבעיות קטנות וזהות היא מה שהופך את הרקורסיה לעוצמתית כל כך עבור סוגים מסוימים של אתגרי תכנות.
נסו בעצמכם
השיעור הזה לא כולל אתגר קוד.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת התוכנית
1מניפולציות מתקדמות ברשימות
מאפייני רשימה: ראשון ואחרוןמצב הרשימה: isEmpty ו-isNotEmpהיפוך רשימההוספה לרשימה: insertהסרת פריטים מרשימה: removeWhereחיפוש ברשימה: indexOfמיון רשימהערבוב רשימהסיכום – מארגן רשימות4מניפולציה מתקדמת של Map
מעבר על Mapבדיקה אם מפתחות וערכים קיימיםמאפייני Map: מפתחות וערכיםהוספה מותנית: putIfAbsentהסרת רשומות מ־MapMaps מקונניםסיכום – עדכון מלאי2פעולות פונקציונליות על רשימות
טרנספורמציה באמצעות 'map'סינון באמצעות 'where'שימוש ב-'.toList()'בדיקת תנאים באמצעות 'any'תנאים באמצעות 'every'איתור באמצעות 'firstWhere'סיכום – סינון נתונים5פרויקט: חישוב עגלת קניות
הגדרת הפרויקטהוספת פריטים לעגלה3קבוצות
מהי קבוצה?יצירת קבוצההוספה והסרה מקבוצותבדיקת נוכחות של איברים בקבוצההמרת רשימה לקבוצהאיחוד קבוצותחיתוך קבוצותהפרש קבוצותסיכום – רשימת אורחים ייחודית6טיפול בסיסי בשגיאות
מהן חריגות?בלוק ה-try-catchתפיסת חריגות באמצעות onבלוק ה-finallyהשלכת חריגהסיכום – חלוקה בטוחה9טיפוסי מנייה (Enums)
מה הם Enums?הגדרת Enum פשוטשימוש ב-Enums במשתניםEnums במשפטי 'switch'סיכום – רמזורתרגלו בעצמכם: קומפיילר Dart אונליין