繁体   English   中英

每个子数组的中间值

[英]middle value of each subarray

出现以下错误:at parenthesis.check.printcombination(check.java:51)

在parenthesis.check.printcombination(check.java:58)处,我的第51行和第56行在下面的代码中被注释

package parenthesis;

import java.util.*;

public class check {

    public static void main(String args[]) {
        int arr[] = { 12, 13, 14, 15, 16, 17, 18, 19 };

        function(arr, 0, 7);
    }

    public static void function(int arr[], int start, int end) {
        int mid;

        mid = (start + end) / 2;

        printcombination(arr, start, end, mid);
    }

    public static void printcombination(int arr[], int start, int end, int mid) {

        System.out.print(arr[mid] + " "); //// error

        if ((start == mid) && (mid == end)) {
            return;
        }

        printcombination(arr, start, mid - 1, (start + mid - 1) / 2); //// error

        printcombination(arr, mid + 1, end, (mid + 1 + end) / 2);

    }

}

在第34行有一个不好的递归(“ printcombination(arr,start,mid-1,(start + mid-1)/ 2); ////错误”),这里抛出了StackOverflowError错误。 “ printcombination”方法的递归流程为:

开始= 0,中间= 3,结束= 7,调用“ printcombination(arr,start,mid-1,(start + mid-1)/ 2)”;

开始= 0,中间= 1,结束= 2,调用“ printcombination(arr,start,mid-1,(start + mid-1)/ 2)”;

开始= 0,中= 0,结束= 0,返回;

开始= 0,中间= 1,结束= 2,调用“ printcombination(arr,mid + 1,end,(mid + 1 + end)/ 2);

开始= 0,中= 3,结束= 7,调用printcombination(arr,mid + 1,end,(mid + 1 + end)/ 2);

开始= 4,中间= 5,结束= 7,调用“ printcombination(arr,start,mid-1,(start + mid-1)/ 2)”;

开始= 4,中间= 4,结束= 4,返回;

开始= 4,中间= 5,结束= 7,调用“ printcombination(arr,mid + 1,end,(mid + 1 + end)/ 2)”;

开始= 6,中间= 6,结束= 7,调用“ printcombination(arr,start,mid-1,(start + mid-1)/ 2)”;

开始= 6,中间= 5,结束= 5,调用“ printcombination(arr,start,mid-1,(start + mid-1)/ 2)”;

开始= 6,中间= 5,结束= 4,调用“ printcombination(arr,start,mid-1,(start + mid-1)/ 2)”;

开始= 6,中间= 5,结束= 4,调用“ printcombination(arr,start,mid-1,(start + mid-1)/ 2)”;

...

请尝试或代替以下内容: if((start==mid)||(mid==end))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM