import java.util.Scanner;
public class MinMaxDivideConquer {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter the number of elements: ");
int n = scanner.nextInt();
int[] arr = new int[n];
System.out.println("Enter the elements: ");
for (int i = 0; i < n; i++) {
arr[i] = scanner.nextInt();
}
// Initialize parameters
int i = 0;
int j = n - 1;
int min = arr[0];
int max = arr[0];
// Call the divide and conquer function
findMinMax(arr, i, j, min, max);
System.out.println("Minimum: " + min);
System.out.println("Maximum: " + max);
}
public static void findMinMax(int[] arr, int i, int j, int min, int max) {
if (i == j) {
min = max = arr[i];
} else if (i == j - 1) {
if (arr[i] < arr[j]) {
min = arr[i];
max = arr[j];
} else {
min = arr[j];
max = arr[i];
}
} else {
int mid = (i + j) / 2;
int min1 = 0;
int max1 = 0;
findMinMax(arr, i, mid, min, max);
findMinMax(arr, mid + 1, j, min1, max1);
if (min1 < min) {
min = min1;
}
if (max1 > max) {
max = max1;
}
}
}
}
使用分而治之,我应该获得用户给出的数组的最大值和最小值,但第一个元素是最大值和最小值。因为代码应该是基本和简单的,我没有使用integer.min_value等..,我经过这么多的尝试,找不到错误在哪里。
您已调用递归 findMinMax 方法,但它从未返回并分配回来。不,它不是递归函数