Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Can';无法使用递归找到bug-二进制搜索 /*对于代码中存在的元素,代码将成功运行,但对于 不在显示第33号代码语句错误的数组列表中*/ 包递归; 公共类二进制搜索{ 公共静态void main(字符串参数[]) { int数组[]={1,2,5,6,7,32,38,48,75,87,98};//11个元素 int find=3; 布尔ans=binarySearch(find,array,0,array.length-1); 如果(ans==true) System.out.println(“可用编号”); 其他的 System.out.println(“编号不可用”); } 静态布尔二进制搜索(int-valToFind,int-arr[],int-start,int-end) { 布尔值=假; 如果(开始==结束) { if(arr[start]==valToFind) avail=true; 其他的 avail=false; } int mid; mid=findmid(arr、start、end); 如果(arr[mid]>valToFind) 二进制搜索(valToFind、arr、start、mid-1); else if(arr[mid]_Java - Fatal编程技术网

Java Can';无法使用递归找到bug-二进制搜索 /*对于代码中存在的元素,代码将成功运行,但对于 不在显示第33号代码语句错误的数组列表中*/ 包递归; 公共类二进制搜索{ 公共静态void main(字符串参数[]) { int数组[]={1,2,5,6,7,32,38,48,75,87,98};//11个元素 int find=3; 布尔ans=binarySearch(find,array,0,array.length-1); 如果(ans==true) System.out.println(“可用编号”); 其他的 System.out.println(“编号不可用”); } 静态布尔二进制搜索(int-valToFind,int-arr[],int-start,int-end) { 布尔值=假; 如果(开始==结束) { if(arr[start]==valToFind) avail=true; 其他的 avail=false; } int mid; mid=findmid(arr、start、end); 如果(arr[mid]>valToFind) 二进制搜索(valToFind、arr、start、mid-1); else if(arr[mid]

Java Can';无法使用递归找到bug-二进制搜索 /*对于代码中存在的元素,代码将成功运行,但对于 不在显示第33号代码语句错误的数组列表中*/ 包递归; 公共类二进制搜索{ 公共静态void main(字符串参数[]) { int数组[]={1,2,5,6,7,32,38,48,75,87,98};//11个元素 int find=3; 布尔ans=binarySearch(find,array,0,array.length-1); 如果(ans==true) System.out.println(“可用编号”); 其他的 System.out.println(“编号不可用”); } 静态布尔二进制搜索(int-valToFind,int-arr[],int-start,int-end) { 布尔值=假; 如果(开始==结束) { if(arr[start]==valToFind) avail=true; 其他的 avail=false; } int mid; mid=findmid(arr、start、end); 如果(arr[mid]>valToFind) 二进制搜索(valToFind、arr、start、mid-1); else if(arr[mid],java,Java,一个问题是您忽略了递归调用返回的值 另一个问题是,在停止条件下,当start==end,您设置了希望返回的值(avail),但随后继续递归,而不是立即返回 这项工作: /*for the elements which are present in the code, the code runs succesfully but for the elements which are not in the array list showing error in code statement no.

一个问题是您忽略了递归调用返回的值

另一个问题是,在停止条件下,当
start==end
,您设置了希望返回的值(
avail
),但随后继续递归,而不是立即返回

这项工作:

/*for the elements which are present in the code, the code runs succesfully but for the elements which
  are not in the array list showing error in code statement no. 33*/

package recursion;

public class BinarySearch {

    public static void main(String args[])
    {
        int array[]={1,2,5,6,7,32,38,48,75,87,98};// 11 elements
        int find=3;
        boolean ans=binarySearch(find, array, 0, array.length-1);
        if(ans==true)
            System.out.println("Number Available");
        else
            System.out.println("Number not Available");
    }

    static boolean binarySearch(int valToFind, int arr[], int start, int end)
    {
        boolean avail=false;
        if(start == end)
        {
            if(arr[start]==valToFind)
                avail=true;
            else
                avail=false;        
        }

        int mid;
        mid=findmid(arr,start,end);

        if(arr[mid]>valToFind)
            binarySearch(valToFind,arr,start,mid-1);
        else if(arr[mid]<valToFind)
            binarySearch(valToFind,arr,mid+1,end);
        else if(arr[mid]==valToFind)
            avail= true;

        return avail;
    }

    static int findmid(int arr[],int start, int end)
    {
        int mid = (start+end)/2;
        return mid;
    }
}
静态布尔二进制搜索(int-valToFind,int-arr[],int-start,int-end)
{
如果(开始==结束){
返回arr[start]==valToFind;
}
int mid=findmid(arr、start、end);
如果(arr[mid]>valToFind)
返回二进制搜索(valToFind、arr、start、mid-1);

else if(arr[mid]一个问题是您忽略了递归调用返回的值

另一个问题是,在停止条件下,当
start==end
,您设置了希望返回的值(
avail
),但随后继续递归,而不是立即返回

这项工作:

/*for the elements which are present in the code, the code runs succesfully but for the elements which
  are not in the array list showing error in code statement no. 33*/

package recursion;

public class BinarySearch {

    public static void main(String args[])
    {
        int array[]={1,2,5,6,7,32,38,48,75,87,98};// 11 elements
        int find=3;
        boolean ans=binarySearch(find, array, 0, array.length-1);
        if(ans==true)
            System.out.println("Number Available");
        else
            System.out.println("Number not Available");
    }

    static boolean binarySearch(int valToFind, int arr[], int start, int end)
    {
        boolean avail=false;
        if(start == end)
        {
            if(arr[start]==valToFind)
                avail=true;
            else
                avail=false;        
        }

        int mid;
        mid=findmid(arr,start,end);

        if(arr[mid]>valToFind)
            binarySearch(valToFind,arr,start,mid-1);
        else if(arr[mid]<valToFind)
            binarySearch(valToFind,arr,mid+1,end);
        else if(arr[mid]==valToFind)
            avail= true;

        return avail;
    }

    static int findmid(int arr[],int start, int end)
    {
        int mid = (start+end)/2;
        return mid;
    }
}
静态布尔二进制搜索(int-valToFind,int-arr[],int-start,int-end)
{
如果(开始==结束){
返回arr[start]==valToFind;
}
int mid=findmid(arr、start、end);
如果(arr[mid]>valToFind)
返回二进制搜索(valToFind、arr、start、mid-1);

否则,如果(arr[mid],您会看到什么错误?是否可以包括堆栈跟踪?指示哪一行是第33行也会有帮助。您会看到什么错误?是否可以包括堆栈跟踪?指示哪一行是第33行也会有帮助。