| 
          
           | | נשלח בתאריך: 31 October 2008 בשעה 12:53 | | IP רשוּם | 
 |   |  
           | 
 |  שלום, תוכלו להסביר לי איזו מבין 3 הפעולות הרקורסיביות הבאות למציאת איבר מקסימלי במערך יעילה יותר? *הנחה: גודל המערך גדול מ-1 *בפעולה הקולטת פרמטר של איבר אחרון במערך, יש להניח שהוא תמיד יהיה:  פעולה ראשונה: 
| קוד: 
 
    
    | 
      
       | public static int FindMax(int[] arr, int start, int end) {
 if (start == end) return arr[start];
 else
 {
 int middle = (start + end) / 2;
 int max1 = FindMax(arr, start, middle);
 int max2 = FindMax(arr, middle+1, end);
 if (max1 > max2) return max1;
 return max2;
 }
 }
 
 |  |  |  פעולה שניה: 
| קוד: 
 
    
    | 
      
       | public static int FindMax(int[] arr, int start) {
 if (start == arr.Length - 1)
 return arr[start];
 else
 {
 int temp = FindMax(arr, start + 1);
 if (arr[start] > temp)
 return arr[start];
 return temp;
 }
 }
 
 |  |  |  פעולה שלישית: 
| קוד: 
 
    
    | 
      
       | public static int FindMax(int[] arr, int start) {
 if (start == arr.Length -1)
 return Math.Max(arr[arr.Length -1], arr[arr.Length -2]);
 int max = Math.Max(arr[start], arr[start++]);
 return Math.Max(max, FindMax(arr, start++));
 }
 
 |  |  |  |