פעולה רקורסיבית what המוציאה מהתור רק רצף רציף השווה לערך נתון, ופעולה secret המשתמשת בה כדי לצבור מכפלות 'ערך·אורך-ריצה' ולבנות מהן תור חדש. שני סעיפי מעקב: what לבדה, ו-secret כולל שחזור התור המקורי מתוך הפלט.
פעולה רקורסיבית what המוציאה מהתור רק רצף רציף השווה לערך נתון, ופעולה secret המשתמשת בה כדי לצבור מכפלות 'ערך·אורך-ריצה' ולבנות מהן תור חדש. שני סעיפי מעקב: what לבדה, ו-secret כולל שחזור התור המקורי מתוך הפלט.
public static int What (Queue<int> q , int x)
{
if ( q.IsEmpty() || x != q.Head() )
return 0;
x = q.Remove();
return 1 + What(q , x);
}
public static int Secret(Queue<int> q)
{
if (q.isEmpty()) return 0;
int x = q.Head();
int z = x * What(q, x);
int y = 1 + Secret(q);
q.Insert(z);
return y;
}
סעיף א
עקבו אחר ביצוע הפעולה what (ראו קוד לעיל). ענו:
- מה יחזיר זימון הפעולה what(q,5) עבור התור q:[5,5,5,3,3,2,8] (5 בראש התור)? יש להראות מעקב אחרי ביצוע הפעולה.
- אחרי זימון הפעולה what(q, x) עבור התור q לא ריק, התור q נשאר ללא שינוי. האם הטענה 'ערך x לא מופיע בתור' נכונה? הסבירו את תשובתכם.
- תנו דוגמה של תור q שעבורו זימון הפעולה what(q, 7) תחזיר 4. איך ייראה התור אחרי זימון הפעולה?
- מה מבצעת הפעולה?
סעיף ב
נתונה הפעולה secret (ראו קוד לעיל). עקבו אחר הפעולה secret(q) עבור התור q:[5,5,1,1,4,4,4,5,6] (5 בראש התור). אין צורך לפרט את המעקב אחרי הפעולה what. ענו:
- מהו הערך המוחזר מהפעולה secret?
- איך ייראה התור בסיום הפעולה secret?
- אחרי זימון הפעולה secret(q) התור q נראה כך: q:[6,16,2,3] (6 בראש התור). איך נראה התור q לפני זימון הפעולה?
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.