请求大佬支援!!!递归返回错误

结果应该是38.但是返回的却是21

public static void main(String[] args) {
        int[] a = {2,5,3,9,12,7};
        System.out.println(test3(a,0,a.length-1));
    }

private static int test3(int[] a,int begin,int end) {

        int mid = (begin + end)/2;

        if(mid==begin)
            return a[begin];
        if(mid==end)
            return a[end];

        return test3(a,begin,mid)+test3(a,mid+1,end);


    }

1个回答

public static void main(String[] args) {
        int[] a = {2,5,3,9,12,7};
        System.out.println(test3(a,0,a.length-1));
    }

    private static int test3(int[] a,int begin,int end) {

        if(end-begin>=2) {
            int mid = (begin + end)/2;

            if(mid==begin) {
                return a[begin];
            }
            if(mid==end)
                return a[end];
            return test3(a,begin,mid)+test3(a,mid+1,end);
        }else if(end-begin==1){
            return a[begin]+a[end];
        }else {
            return a[begin];
        }
    }
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐