这些是等价的吗?

时间:2016-08-11 04:07:59

标签: c recursion quicksort mergesort

merge sortquicksort的主要功能中,我们使用以下内容进行递归

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();

}

我相信每当低点等于高点时,递归就会停止。并将从之前的通话开始执行工作。 但它不起作用! 知道为什么吗?

1 个答案:

答案 0 :(得分:1)

在代码的第一部分中,如果块仅在低于低时才起作用。所以如果你想重写检查,你需要确保只要low等于或大于high,你的函数就应该停止递归调用。

尝试这样检查。

if(low>=high){   //you have to check if low becomes greater or equal to high too!
    return;
}