return 语句不结束方法 java


public class Interpolation_search {
public static void main(String...s) {
int rr[]= {1,2,3,4,9,10,15,80};
System.out.println(search(rr,0,7,3));
}
static int search(int ar[], int lo, int hi,int X) {
if(lo<hi&&ar[lo]!=ar[hi]) {
int mid=lo + ((hi-lo)/(ar[hi]-ar[lo]))*(X-ar[lo]);
if(X==ar[mid])
return 1;      //l1
else if(X>ar[mid])
search(ar,mid+1,hi,X);
else search(ar,lo,mid-1,X);
}
return 0;              //l2
}
}

return 首先在 L1 执行两次,在 L2 执行第二次。

您似乎很难理解递归。

您的方法search()应该返回一个 int 结果。并且该方法本身反复调用自己(使用不同的参数(。问题是:你们都忽略了这些递归调用。

换句话说:真正的答案是让你退后一步,理解递归的含义,以及如何正确使用它。作为初学者,您可以尝试更改

search(ar,mid+1,hi,X);

return search(ar,mid+1,hi,X);

最新更新