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

סעיף א

נתונה הפעולה הרקורסיבית What המקבלת מערך מספרים שלמים הממוין בסדר עולה ומספר שלם וחיובי num:

public static bool What(int[] arr, int num)
{
       return What(arr, num, 0,arr.Length-1, false);
}
public static bool What(int[] arr, int num, int i, int k,
                       bool f)
{
       if(i >= k) return f;
       if(arr[i] + arr[k] < num)
            return What(arr, num, i+1,k,f);
       if(arr[i] + arr[k] > num)
            return What(arr, num, i,k-1,f);
       Console.WriteLine(arr[i]+ " " + arr[k]);
       return What(arr, num, i+1, k-1, true);
}

נתון המערך הבא של מספרים שלמים: int[] a={2,4,7,13,18,21,30}; עקבו אחרי זימון What(a, 20). רשמו את תוצאת הזימון. יש להראות מעקב!

סעיף ב

מה מבצעת הפעולה What באופן כללי?

סעיף ג

נתונה הפעולה הרקורסיבית Why המקבלת מערך מספרים שלמים הממוין בסדר עולה ומספר שלם וחיובי num:

public static int Why(int[] arr, int num)
{
       return Why(arr, num, 0,1, 0);
}
public static int Why(int[] arr, int num, int i, int k, int f)
{
       if(i == arr.Length-1)return f;
       if(k == arr.Length)return f;
       if(arr[k] - arr[i] < num)
            return Why(arr, num, i, k+1, f);
       if(arr[k] - arr[i] > num)
            return Why(arr, num, i+1, k, f);
       Console.WriteLine(arr[i]+" " + arr[k]);
       return Why(arr, num, i+1,k+1, f+1);
}

נתון המערך הבא של מספרים שלמים: int[] a={2,4,7,13,18,21,30}; האם קיים מספר num שעבורו זימון Why(a, num) יחזיר 2? אן כן, תנו דוגמה למספר כזה וציינו מה יהיה הפלט, ולא – הסבירו למה הדבר לא אפשרי.

סעיף ד

מה מבצעת הפעולה Why באופן כללי?

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

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

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

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