Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 这个递归函数的答案是什么?_Java_Sorting_Recursion_Data Structures_Computer Science - Fatal编程技术网

Java 这个递归函数的答案是什么?

Java 这个递归函数的答案是什么?,java,sorting,recursion,data-structures,computer-science,Java,Sorting,Recursion,Data Structures,Computer Science,这是合并排序的方法: private void doMergeSort(int lowerIndex, int higherIndex) { if (lowerIndex < higherIndex) { int middle = lowerIndex + (higherIndex - lowerIndex) / 2; System.out.println("Lower index="+lowerIndex+" Middle

这是合并排序的方法:

    private void doMergeSort(int lowerIndex, int higherIndex) {

        if (lowerIndex < higherIndex) {

        int middle = lowerIndex + (higherIndex - lowerIndex) / 2;

        System.out.println("Lower index="+lowerIndex+"   Middle="+middle+ "   Higher index="+higherIndex);

        doMergeSort(lowerIndex, middle);

        doMergeSort(middle + 1, higherIndex);

        mergeParts(lowerIndex, middle, higherIndex);//never mind this method
    }
}

输出的第四行(以注释标记)是如何产生的?请解释。

以下是代码控制流的诊断表示,这将帮助您澄清疑问


这是从
doMergeSort(0,4)
进行的第二次递归调用:中间值被计算为2,因此您进行调用(0,2)和(3,4)。为什么您对此有问题?您在单步执行代码时有问题吗?如果在println处放置一个断点,则在打印特定行时可以看到递归的调用堆栈。@jasonharper那么这是否意味着函数doMergeSort(0,4)和doMergeSort(3,4)都同时执行?我明白了,但是为什么func(5,9)不能作为func(0,4)的同级执行?
    Lower index=0   Middle=4   Higher index=9
    Lower index=0   Middle=2   Higher index=4
    Lower index=0   Middle=1   Higher index=2
    Lower index=0   Middle=0   Higher index=1
    Lower index=3   Middle=3   Higher index=4//This line
    Lower index=5   Middle=7   Higher index=9
    Lower index=5   Middle=6   Higher index=7
    Lower index=5   Middle=5   Higher index=6
    Lower index=8   Middle=8   Higher index=9
    4 11 23 28 43 45 65 77 89 98 //never mind this part too