在merge sort
和quicksort
的主要功能中,我们使用以下内容进行递归
mergesort(int * arr, int low, int high){
if(low<high){
//mergesort();
//mergesort();
//merge();
}
}
然而,我使用了它的替代品,它是:
mergesort(int * arr, int low, int high){
if(low==high){
return;
}
//mergesort();
//mergesort();
//merge();
}
我相信每当低点等于高点时,递归就会停止。并将从之前的通话开始执行工作。 但它不起作用! 知道为什么吗?
答案 0 :(得分:1)
在代码的第一部分中,如果块仅在低于低时才起作用。所以如果你想重写检查,你需要确保只要low等于或大于high,你的函数就应该停止递归调用。
尝试这样检查。
if(low>=high){ //you have to check if low becomes greater or equal to high too!
return;
}