我看到一些帖子,了解归并排序。我知道递归方法维护堆栈来保存值。 (我明白的是return语句的结果将是在栈)了解递归与归并排序
private int recur(int count) {
if (count > 0) {
System.out.println(count);
return count + recur(--count); // this value will be in stack.
}
return count;
}
我困惑的合并排序如何堆在这里维护。
private void divide(int low, int high) {
System.out.println("Divide => Low: "+ low +" High: "+ high);
if (low < high) {
int middle = (low + high)/2;
divide(low, middle); // {0,7},{0,3}, {0,1} ;
divide(middle + 1, high); // {0,0}; high = 1; // 2nd divide
combine(low, middle, high);
}
}
- 是堆栈的所有局部变量?
- 当第二次递归方法调用时,第一次递归也会加入? 在这种情况下如何维护堆栈?
[这](https://www.youtube.com/watch?v=zkdwpdHLuII)最能解释它。 –
你会更简单地理解递归问题。甚至在此之前,您应该查看堆栈是什么,调用函数以及将哪些值压入堆栈,如何将返回值传播给调用方以及如何将参数传递给函数。 –