java-使用分而治之,检查已排序数组是否具有A [i] = i
作者:互联网
我得到了具有不同元素的排序数组.
如果A [i] = i,则返回true
else return false;
我只需要返回true或false,而不是职位.
我已经实现了代码,但是有一些小错误.
private static boolean find(int[] a, int low, int high)
{
System.out.println(Arrays.toString(a)+" "+low+ " "+high);
if(low<=high)
{
int mid = (low+high)/2;
if(mid==a[mid])
{
return true;
}
else if(a[mid]>mid)
{
find (a,low,mid-1);
}
else{
find (a,mid+1,high);
}
}
return false;
}
我知道即使找到中间值,它也会返回false.
我应该进行哪些更改,以便在所有情况下都返回true.
解决方法:
在递归调用find的地方,在调用find之前应该有一个返回值,以便它将返回嵌套调用的结果
return find(...) //etc..
标签:divide-and-conquer,java,algorithm 来源: https://codeday.me/bug/20191027/1947329.html