מבוא לרקורסיה
חלק מהיחידה לוגיקה וזרימת תוכנית במסלול ה-C++ של Coddy. שיעור 45 מתוך 56.
רקורסיה היא טכניקת תכנות שבה פונקציה קוראת לעצמה כדי לפתור בעיה. במקום להשתמש בלולאות, פונקציות רקורסיביות מפרקות בעיות מורכבות לתת־בעיות קטנות יותר ודומות, עד שהן מגיעות למקרה פשוט שאפשר לפתור ישירות.
לכל פונקציה רקורסיבית חייבים להיות שני מרכיבים חיוניים. מקרה הבסיס הוא תנאי שעוצר את הרקורסיה - בלעדיו, הפונקציה הייתה קוראת לעצמה לנצח. הצעד הרקורסיבי הוא המקום שבו הפונקציה קוראת לעצמה עם פרמטרים ששונו, ומתקרבת למקרה הבסיס בכל קריאה.
הנה דוגמה פשוטה לספירה לאחור שמדגימה רקורסיה:
void countdown(int n) {
if (n <= 0) { // מקרה בסיס: עצור כאשר n מגיע ל-0
std::cout << "Done!" << std::endl;
return;
}
std::cout << n << std::endl;
countdown(n - 1); // צעד רקורסיבי: קרא לפונקציה עם n-1
}כשקוראים ל־countdown(3), הפונקציה מדפיסה 3, ואז קוראת ל־countdown(2), שמדפיסה 2, ואז קוראת ל־countdown(1), וכך הלאה עד שהיא מגיעה למקרה הבסיס. כל קריאה לפונקציה ממתינה להשלמת הקריאה הבאה לפני שהיא מסתיימת, וכך נוצרת שרשרת של קריאות שבסופו של דבר חוזרת לאחור עד למי שקרא לפונקציה המקורית.
נסו בעצמכם
השיעור הזה לא כולל אתגר קוד.
השיעור הזה כולל חידון קצר. התחילו את השיעור כדי לענות עליו ולעקוב אחרי ההתקדמות.
כל השיעורים ביחידה לוגיקה וזרימת תוכנית
1מצביעים וזיכרון
מהו מצביע?אופרטור קבלת כתובתאופרטור ביטול הפניהמצביעי Nullמצביעים ומערכיםזיכרון דינמי באמצעות 'new'שחרור זיכרון באמצעות 'delete'סיכום — תרגול מצביעים4מפות (זוגות מפתח-ערך)
היכרות עם std::mapיצירת מפהגישה לערכים ושינויםבדיקה אם מפתחות קיימיםהסרת זוגותמעבר על מפהסיכום – שכיחות מילים7פונקציות מתקדמות
העברה לפי הפניהמבוא לביטויי LambdaLambda עם פרמטריםLambda עם ערכי החזרהמבוא לרקורסיהעצרת רקורסיביתמיון באמצעות Lambda2וקטורים (מערכים דינמיים)
היכרות עם std::vectorיצירת וקטורהוספת איבריםגישה לאיבריםגודל הווקטורמעבר על איברים באמצעות לולאת forלולאת for מבוססת טווחהסרת איבריםסיכום — פעולות על וקטורים5פרויקט: כלי לניהול מלאי
הגדרת הפרויקטהוספה ועדכון של פריטיםתרגלו בעצמכם: קומפיילר C++ אונליין