Это простая рекурсивная функция алгоритма quicksort, и я не нашел оператор return в этой функции, чтобы он не очистил стек после последней рекурсии?Не записывает ли оператор return в функцию void память стека?
void quicksort(int arr[], int p, int r){
int q = partition(arr, p, r);
if(p < r){
quicksort(arr,p, q-1);
quicksort(arr,q+1, r);
}
}
Эта функция не возвращает statemnt так будет рекурсивные функции остаются на стеке навсегда, или они будут когда-нибудь опорожнить?
Рекурсия закончится, когда 'p> = r'. –
Существует неявный оператор 'return' непосредственно перед закрытием'} '. В целом полезно помнить, что инструменты (языки, компиляторы), которые делают глупые вещи, быстро умирают. –
это функция 'void', поэтому от нее не ожидается возвратного значения. Кроме того, обычно это код вызывающего абонента, который очищает стек, а не код функции. Наконец, всегда существует неявный 'return;' в конце функции 'void'. –