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 }