בפרויקט הזה נלמד על סוגים שונים של רקורסיה, דרך סיפור על אינדיאנה ג’ונס.
כל סוג רקורסיה מיוצג דרך מחלקות פשוטות ב־Java – ללא צורך בהיכרות מוקדמת עם רשימות או תורים.
אינדיאנה נכנס למקדש. בכל חדר יש דלת אחת לחדר הבא.
הוא הולך עד שמגיע לחדר האחרון, ואז חוזר אחורה ופותח חידות.
public class Room {
private Room nextRoom;
public Room(Room nextRoom) {
this.nextRoom = nextRoom;
}
public void explore() {
if (nextRoom != null) {
nextRoom.explore(); // ממשיך לחדר הבא
}
System.out.println("📜 פתר חידה בחדר");
}
}
תרגול:
צור מקדש עם 5 חדרים, וכתוב פונקציה שמריצה את explore() מהחדר הראשון.
שים System.out.println("נכנס לחדר") בתחילת explore() – מה יוצא?
## 🧗♂️ חלק 2 – המגדל עם הרמזים (Bottom-Up Recursion)
הסיפור:
אינדיאנה עולה במגדל. בכל קומה יש רמז, אבל הוא מתכנן לקרוא אותם רק בירידה חזרה.
הקוד:
```java
public class TowerLevel {
private TowerLevel nextLevel;
private String clue;
public TowerLevel(TowerLevel nextLevel, String clue) {
this.nextLevel = nextLevel;
this.clue = clue;
}
public void collectClues() {
if (nextLevel != null) {
nextLevel.collectClues();
}
System.out.println("🪧 רמז: " + clue);
}
}
תרגול: צור 3 קומות עם רמזים: “זהב”, “פסל עתיק”, “מפתח”.
מה יקרה אם תחליף את סדר ההדפסה (System.out.println) לפני הקריאה הרקורסיבית?
הסיפור: אינדיאנה מקבל לפיד. בכל שלב הוא משנה מעט את המסר ומעביר לחוקר הבא. החוקר האחרון מקבל את המסר המלא.
הקוד: