9:递归

9:递归

 

  递归的应用十分重要,后面会反复出现。

 

  求数组arr[L ... R]中最大值,怎么用递归方法实现

 1     // 求arr中的最大值
 2     public static int getMax(int[] arr) {
 3         return process(arr, 0, arr.length - 1);
 4     }
 5 
 6     // arr[L..R]范围上求最大值  L ... R   N
 7     public static int process(int[] arr, int L, int R) {
 8         // arr[L..R]范围上只有一个数,直接返回,base case
 9         if (L == R) { 
10             return arr[L];
11         }
12         // L...R 不只一个数
13         // mid = (L + R) / 2
14         int mid = L + ((R - L) >> 1); // 中点       1
15         int leftMax = process(arr, L, mid);
16         int rightMax = process(arr, mid + 1, R);
17         return Math.max(leftMax, rightMax);
18     }

 

posted @ 2022-05-09 16:14  yzmarcus  阅读(67)  评论(0编辑  收藏  举报