Java编写递归方法max(int A[], int l, int h, int max),求解(a1 ,a2 ……,am ……an)中的最大值。比如:应用算法后,求解得到{14, 21, 7, 45, 28, 3, 56, 32}中的最大值为56
时间: 2024-10-27 08:09:45 浏览: 23
JavaAdvancedMinMax:Java的进阶minmax方法
在Java中,递归方法`max(int[] A, int l, int h, int max)`可以用于找出数组`(A[l...h])`中的最大值。这是一个经典的例子,它利用了递归思想,将问题分解为更小的子问题直到达到基本情况。下面是该方法的实现:
```java
public static int max(int[] A, int l, int h, int currentMax) {
// 基本情况:当只有一个元素或者l等于h时,返回当前元素作为最大值
if (l == h) {
return A[l];
}
// 当有两个或更多元素时,比较当前元素和剩余部分的最大值
else if (A[l] > A[h]) {
return max(A, l+1, h, A[l]);
} else {
return max(A, l, h-1, currentMax);
}
}
// 调用函数并传入整个数组、起始位置0和结束位置n-1
int array = {14, 21, 7, 45, 28, 3, 56, 32};
int n = array.length;
int result = max(array, 0, n-1, Integer.MIN_VALUE); // 初始化currentMax为最小整数防止误判
System.out.println("数组中的最大值是:" + result);
```
在这个方法中,我们不断缩小待搜索范围(如果A[l]大于A[h]就从下一个元素开始,否则从上一个元素开始),直到找到最大值。
阅读全文