פעולות עזר נתונות על מחסנית: numOf, randChoice, createSmall, createLarge, eraseSmalls, eraseLarges. what רקורסיבית מקבלת מחסנית s עם מספר אי-זוגי של מספרים שונים, בוחרת ציר אקראי ומצמצמת לכיוון הצד הגדול יותר עד שנמצא איזון — זהו אלגוריתם מציאת חציון.
פעולות עזר נתונות על מחסנית: numOf, randChoice, createSmall, createLarge, eraseSmalls, eraseLarges. what רקורסיבית מקבלת מחסנית s עם מספר אי-זוגי של מספרים שונים, בוחרת ציר אקראי ומצמצמת לכיוון הצד הגדול יותר עד שנמצא איזון — זהו אלגוריתם מציאת חציון.
public static int What(Stack<int> s) {
int a = RandChoice(s);
Stack<int> m1 = CreateSmall(s,a);
int k1 = NumOf(m1);
Stack<int> m2 = CreateLarge(s,a);
int k2 = NumOf(m2);
if (k1 > k2) {
EraseSmalls(m1, k2+1);
return What(m1);
}
if (k2 > k1) {
EraseLarges(m2, k1+1);
return What(m2);
}
return a;
}
המחסנית s לסעיף א' (מ-150dpi crop עמ' 12–13): קריאה משמאל לימין = מראש המחסנית לתחתיתה (חץ כתום מסמן ראש בצד שמאל).
ראש המחסנית → 43, -3, 8, 9, 12, -9, 7, 3, 1 ← תחתית המחסנית
עקבו אחרי זימון הפעולה what(s)/What(s) עבור המחסנית הבאה (ראה איור) ורשמו מה תהיה תוצאת הזימון. יש להראות ערכי משתנים ותכנים של מחסניות בכל זימון הרקורסיבי.
מה מבצעת הפעולה what/What עבור מחסנית המכילה מספר אי-זוגי של מספרים שלמים שכולם שונים זה מזה?
ממשו את הפעולה createSmall (המוגדרת ברשימת הפעולות בראש השאלה).
public static Stack<int> CreateSmall(Stack<int> m, int a)
ממשו את הפעולה randChoice (המוגדרת ברשימת הפעולות בראש השאלה).
public static int RandChoice(Stack<int> m)
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.