【发布时间】:2018-12-07 07:11:49
【问题描述】:
这是我几个月前看到的一个函数,我试图复制它,但我认为我遗漏了一些东西,因为程序没有结束。
void quick_sort(int *array, int len) {
for (int i = 0; i < len - 1; i++) {
if (array[i] > array[i + 1]) {
int temp = array[i];
array[i] = array[i + 1];
array[i + 1] = temp;
}
}
quick_sort(array, len);
}
我在这里做错了什么?有人可以帮忙吗?
【问题讨论】:
-
递归结束的条件是什么?
-
你总是在递归调用
quick_sort(array, len);。它应该在某个if块中或被return跳过,否则会出现无限递归。 -
每个递归函数必须包含 (1) 退出条件(上面的 base_case)和 (2) 递归调用。您的函数没有退出条件并不断调用
quick_sort (array, len),其中len永远不会更改,并且对array所做的任何操作都不会触发递归退出。