이것은 quicksort 알고리즘의 간단한 재귀 함수이며이 함수에서 return 문을 찾지 못했기 때문에 마지막 재귀 이후에 스택을 비우지 않습니까?void 함수에서 return 문을 쓰지 않으면 스택 메모리를 차지합니까?
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' 함수이므로 반환 값이 필요하지 않습니다. 또한 일반적으로 함수 코드가 아닌 스택을 지우는 호출자 코드가 있습니다. 마지막으로'void' 함수의 끝에는 항상 암묵적인'return;이 있습니다. –