סעיף א
נתונה הפעולה הרקורסיבית what המקבלת מערך מספרים שלמים הממוין בסדר עולה ומספר שלם וחיובי num:
public static boolean what(int[] arr, int num)
{
return what(arr, num, 0,arr.length-1, false);
}
public static boolean what(int[] arr, int num, int i, int k, boolean 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);
System.out.println(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);
System.out.println(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 באופן כללי?
שאלות ותגובות על השאלה
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה לתכנות
שאלו כאן — ותקבלו מענה מוסמך.