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