编程语言
首页 > 编程语言> > java-使用分而治之,检查已排序数组是否具有A [i] = i

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