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

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

public static void one(Stack<Integer> 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<Integer> s){
    if(!s.isEmpty())
    {
        int x = s.pop();
        two(s);
        one(s,x);
    }
}

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

public static boolean three(Stack<Integer> 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);
}
סעיף א

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

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

s1
3
-1
7
2
סעיף ב

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

סעיף ג

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

סעיף ד

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

סעיף ה

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

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

s2
3
6
14
2
6
3
1
שאלות ותגובות על השאלה

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

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

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