נתונות שתי פעולות רקורסיביות הפועלות על שרשרת חוליות (linked list) מטיפוס Node<Integer>: הפעולה what מקבלת שרשרת lst ומספר שלם x; הפעולה guess מקבלת שרשרת lst בלבד וקוראת בתוכה ל-what. בכל סעיפי השאלה יש לעקוב אחר ריצת הפעולה הנתונה, ולענות על שלוש שאלות: מה השרשרת המתקבלת / מה מדפיסה הפעולה, מה עושה הפעולה (בלשון כללית), ומה סיבוכיות הזמן שלה.
נתונות שתי פעולות רקורסיביות הפועלות על שרשרת חוליות (linked list) מטיפוס Node<Integer>: הפעולה what מקבלת שרשרת lst ומספר שלם x; הפעולה guess מקבלת שרשרת lst בלבד וקוראת בתוכה ל-what. בכל סעיפי השאלה יש לעקוב אחר ריצת הפעולה הנתונה, ולענות על שלוש שאלות: מה השרשרת המתקבלת / מה מדפיסה הפעולה, מה עושה הפעולה (בלשון כללית), ומה סיבוכיות הזמן שלה.
public static Node<int> What (Node<int> lst, int x)
{
if (lst == null)
return null;
Node<int> temp = What (lst.GetNext(),x);
if (lst.GetValue() == x)
return temp;
lst.SetNext (temp);
return lst;
}
public static void Guess (Node<int> lst)
{
if (lst != null) {
Node<int> temp = What (lst.GetNext(), lst.GetValue());
lst.SetNext (temp);
Guess (lst.GetNext());
}
}
שרשרת החוליות lst הנתונה, מטיפוס Node<Integer>, המשמשת בשני סעיפי השאלה.
lst -> [1] -> [3] -> [5] -> [3] -> [1] -> [9] -> [4] -> null
עקבו אחר הפעולה what (lst, 1), והציגו את השרשרת שהפעולה מחזירה.
מה עושה הפעולה what? הסבירו את תשובתכם.
מהי סיבוכיות הפעולה what? נמקו את תשובתכם.
עקבו אחר הפעולה guess (lst), והציגו את השרשרת lst בסיום הפעולה. בסעיף זה אין צורך לעקוב אחר הפעולה what.
מה עושה הפעולה guess? הסבירו את תשובתכם.
מהי סיבוכיות הפעולה guess? נמקו את תשובתכם.
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.