これはクイックソートアルゴリズムの簡単な再帰関数です。この関数で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;があります。 –