Я вижу некоторые сообщения, чтобы понять сортировку слиянием. Я знаю, что рекурсивные методы поддерживают стек для хранения значений. (насколько я понимаю, результат оператора 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);
}
}
- Есть стек для всех локальных переменных?
- При вызове 2-го рекурсивного метода также присоединится 1-й рекурсивный? Как поддерживается стек в таких случаях?