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

נתונות פעולות רקורסיביות mystery ו-secret:

public static int mystery(String s1, String s2)
{
    if (s1.length() == 0 && s2.length() == 0) return 0;
    if (s1.length() == 0) return -1;
    if (s2.length() == 0) return 1;
    if (s1.charAt(0) < s2.charAt(0)) return -1;
    if (s1.charAt(0) > s2.charAt(0)) return 1;
    return mystery(s1.substring(1), s2.substring(1));
}

public static String[] secret(String[] arr, String s)
{
    String[] temp = new String[arr.length];
    secretHelp(arr, temp, s, 0, 0, temp.length - 1);
    return temp;
}

private static void secretHelp(String[] arr, String[] temp, String s, int i, int left, int right)
{
    if (i < arr.length)
    {
        if (mystery(arr[i], s) < 0)
        {
            temp[left] = arr[i];
            secretHelp(arr, temp, s, i + 1, left + 1, right);
        }
        else
        {
            temp[right] = arr[i];
            secretHelp(arr, temp, s, i + 1, left, right - 1);
        }
    }
}
סעיף א

עקבו אחרי זימון mystery("HELLO","HELP") ורשמו את תוצאת הזימון. יש להראות מעקב!

סעיף ב

מה מבצעת הפעולה mystery(s1, s2) עבור שתי מחרוזות s1,s2?

סעיף ג

נתון מערך מחרוזות: String[] arr = {"HELLO", "WORLD", "GOOD", "DAY","FOR","TEST"} עקבו אחרי הזימון secret(arr, "JAVA") ורשמו את תוצאות הזימון. יש להראות מעקב אחרי הפעולה secret, אין צורך במעקב אחרי הפעולה mystery.

סעיף ד

מה מבצעת הפעולה secret(arr, s) עבור מערך מחרוזות arr ומחרוזת s?

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

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

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

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