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