אתם מתרגלים שאלה מתוך מה"ט מבני נתונים ותכנות מונחה עצמים — הנדסאי תוכנהמבחן 2024 · אביב מועד ב · שאלה 12כל שאלות המבחן ←
רקורסיה›אלגוריתמים רקורסיביים

נתונות שתי פעולות רקורסיביות הבאות:

public static void One(Stack<int> s, int x){
    if(s.IsEmpty())
        s.Push(x);
    else
    {
        int temp=s.Pop();
        One(s,x);
        s.Push(temp);
    }
}

public static void Two(Stack<int> s){
    if(!s.IsEmpty())
    {
        int x = s.Pop();
        Two(s);
        One(s,x);
    }
}

המחסנית s1 (ראש המחסנית למעלה):

s1
3
-1
7
2

נתונה הפעולה הרקורסיבית Three הבאה:

public static bool Three(Stack<int> s){
    if(s.IsEmpty())
        return true;
    int x = s.Pop();
    Two(s);
    if(s.IsEmpty())
        return true;
    int y = s.Pop();
    if(x % y != 0)
        return false;
    Two(s);
    return Three(s);
}

המחסנית s2 (ראש המחסנית למעלה):

s2
3
6
14
2
6
3
1
סעיף א

מה יהיה התוכן של המחסנית s1 אחרי זימון הפעולה One(s1,10)? יש להראות מעקב אחרי ביצוע הפעולה One.

סעיף ב

מה מבצעת הפעולה One(s,x) עבור מחסנית s של מספרים שלמים ומספר שלם x?

סעיף ג

מה יהיה התוכן של המחסנית s1 אחרי זימון הפעולה Two(s1)? יש להראות מעקב אחרי ביצוע הפעולה Two. אין צורך במעקב אחרי הפעולה One.

סעיף ד

מה מבצעת הפעולה Two(s) עבור מחסנית s של מספרים שלמים?

סעיף ה

מהי תוצאת זימון הפעולה Three(s2)? יש להראות מעקב אחרי ביצוע הפעולה Three. אין צורך במעקב אחרי הפעולה Two.

שאלות ותגובות על השאלה

🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות

שאלו כאן — ותקבלו מענה מוסמך.

🎓 מרצה לתכנות עונה כאן — תקבלו מענה מקצועי