gpt4 book ai didi

java - 在使用递归进行二进制搜索编码时,我遇到了一些疑问

转载 作者:行者123 更新时间:2023-12-01 21:24:10 29 4
gpt4 key购买 nike

当只使用if时,我必须返回一些整数

public class solution {

public static int binarySearch(int arr[], int x,int si,int ei){
if(si>ei){
return -1;
}
int mid=(si+ei)/2;
if(arr[mid]==x){
return mid;
}
if(arr[mid]>x){
return binarySearch(arr,x,si,mid-1);
}
if(arr[mid]<x){
return binarySearch(arr,x,mid+1,ei);
}
return 0;
}


}

但是当使用 if-else-if 时,我不必返回任何整数,为什么?

public class solution {

public static int binarySearch(int arr[], int x,int si,int ei){
if(si>ei){
return -1;
}

int mid=(si+ei)/2;
if(arr[mid]==x){
return mid;
}
else if(arr[mid]>x){
return binarySearch(arr,x,si,mid-1);
}
else {
return binarySearch(arr,x,mid+1,ei);
}
}
}

最佳答案

编译器无法猜测最后一个 if 条件永远为真。所以你必须提供一个返回值,以防它是错误的。即使它永远不会发生。您甚至可以去掉最后一个 if 语句。

    public class solution {

public static int binarySearch(int arr[], int x,int si,int ei){
if(si>ei){
return -1;
}
int mid=(si+ei)/2;
if(arr[mid]==x){
return mid;
}
if(arr[mid]>x){
return binarySearch(arr,x,si,mid-1);
}
return binarySearch(arr,x,mid+1,ei);
}


}

关于java - 在使用递归进行二进制搜索编码时,我遇到了一些疑问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63280280/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com