我看到一些帖子,瞭解歸併排序。我知道遞歸方法維護堆棧來保存值。 (我明白的是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)最能解釋它。 –
你會更簡單地理解遞歸問題。甚至在此之前,您應該查看堆棧是什麼,調用函數以及將哪些值壓入堆棧,如何將返回值傳播給調用方以及如何將參數傳遞給函數。 –