作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在归并排序
和快速排序
的主函数中,我们使用以下内容进行递归
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();
}
我相信每当 low 等于 high 时,递归就会停止。并将开始执行之前调用的工作。但它并没有这样工作!知道为什么吗?
最佳答案
在代码的第一部分中,if block 仅在 low 小于 high 时才起作用。因此,如果您想重写检查,您需要确保每当 low 等于或大于 high 时,您的函数就应该停止递归调用。
尝试这样检查。
if(low>=high){ //you have to check if low becomes greater or equal to high too!
return;
}
关于c - 这些是等价的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38887109/
我是一名优秀的程序员,十分优秀!