一个C++的递归问题?请各位大侠帮帮我这初学的“小饭桶”好吗?
下面是一个排序程序,用到了递归。请大侠指点一下递归处的问题?
在下面程序的//后面有两到问题,实在让学生我急的抓耳撓腮,不过,
我想这些小问题对于各位大侠来说,只不过是小菜一碟。
请帮帮我吧
我都快要疯了!!!!!
#ifndef QUIKSORT_H
#define QUIKSORT_H
template<class T>
inline void swap(T& t1, T& t2)
{
T hold = t2;
t2 = t1;
t1 = hold;
}
template<class T>
void quicksort(T *array, int hi, int lo = 0)
{
while (hi > lo)
{
int i = lo;
int j = hi;
do
{
while (array[i] < array[lo] && i < j)
i++;
while (array[--j] > array[lo])
;
if (i < j)
swap(array[j], array[i]);
}
while (i < j);
swap(array[lo], array[j]);
if (j - lo > hi - (j+1))
{
quicksort(array, j-1, lo);
//问题(1)请问在调用quicksort()函数
//的递归后,什么时候才能再执行下边的语句呢?我想每次递归
//都调用自己,根本就没有机会调用下边的语句。
//是不是在调用自己quicksort(array,j-1,lo)的同时执行lo=j+1
//这条语句呢?这样是不是一来每次调用自己的同时都执行lo=j+1 //语句?
lo = j+1;
}
else
{
quicksort(array, hi, j+1);
hi = j-1;
}
}
}
#endif
//问题(2)请问象这样的递归,if不行,还有else 递归到
//什么时间是个头呀?什么时候推出呢?
问题点数:20、回复次数:2Top
1 楼weakest()回复于 2001-10-25 21:32:13 得分 10
while (hi > lo)
这个条件很快就会不成立了,程序递归结束Top
2 楼SlaSk(七叔)回复于 2001-10-25 21:45:23 得分 10
设立一个条件啊。。。。。。
递归的时候带个参数用于判断的。。Top




