(א)נתונה הפעולה הרקורסיבית What המקבלת מערך מספרים שלמים הממוין בסדר עולה ומספר שלם וחיובי num:
```csharp
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). רשמו את תוצאת הזימון. יש להראות מעקב!
```csharp
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:
```csharp
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? אן כן, תנו דוגמה למספר כזה וציינו מה יהיה הפלט, ולא – הסבירו למה הדבר לא אפשרי.
```csharp
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 באופן כללי?
🎓 לא הבנתם משהו? קבלו הסבר נוסף ממרצה בטיחות
שאלו כאן — ותקבלו מענה מוסמך.
רוצים לתרגל אלפי שאלות נוספות?
המשיכו לתרגול מלא עם משוב אישי ←מבחני מה"ט אמיתיים · משוב מיידי · וידאו לכל נושא · מעקב התקדמות