אתם מתרגלים שאלה מתוך מה"ט אלגוריתמיקה ותכנות — הנדסאי תוכנהמבחן 2025 · קיץ מועד א · שאלה 10כל שאלות המבחן ←
אלגוריתמים בסיסייםרקורסיה

נתונות הפעולות הבאות: what ו-secret, ושתי פעולות העזר why ו-mystery.

public static void secret(int[] a, int s) {
    s %= a.length;
    mystery(a, 0, a.length - 1);
    mystery(a, 0, s - 1);
    mystery(a, s, a.length - 1);
}

public static void mystery(int[] a, int start, int end) {
    int temp;
    while (start < end) {
        temp = a[start];
        a[start] = a[end];
        a[end] = temp;
        start++;
        end--;
    }
}

public static void what(int[] a, int d) {
    why(a, d, 0);
}

public static void why(int[] a, int d, int i) {
    if (i < a.length) {
        int j = (i + d) % a.length;
        int rest = a[j];
        why(a, d, i + 1);
        a[i] = rest;
    }
}

נתון מערך arr של מספרים שלמים:

אינדקס0123456
ערך103682115
סעיף א

עקבו אחרי זימון הפעולה mystery(arr, 1, 4) ורשמו מה יהיה תוכן המערך אחרי הזימון.

סעיף ב

עקבו אחרי זימון הפעולה secret(arr, 3) ורשמו מה יהיה תוכן המערך אחרי הזימון.

סעיף ג

מה מבצעת הפעולה secret(a, d) עבור מערך של מספרים שלמים a ומספר שלם וחיובי d?

סעיף ד

עקבו אחרי זימון הפעולה what(arr, 3) ורשמו מה יהיה תוכן המערך אחרי הזימון. יש להראות ערכי המשתנים בכל זימון רקורסיבי.

סעיף ה

אחרי זימון הפעולה what(brr, 2) יתקבל המערך brr הזה:

אינדקס012345
ערך102030405060

מה היה תוכן המערך brr לפני זימון הפעולה?

סעיף ו

מה מבצעת הפעולה what(a, d) עבור מערך של מספרים שלמים a ומספר שלם וחיובי d?

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

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

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

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