任何人都可以帮我找出这段代码中的错误吗

问题描述 投票:0回答:1
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等..,我经过这么多的尝试,找不到错误在哪里。

java arrays divide minmax
1个回答
0
投票

您已调用递归 findMinMax 方法,但它从未返回并分配回来。不,它不是递归函数

© www.soinside.com 2019 - 2024. All rights reserved.