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 执行。
1 回答
温温酱
TA贡献1752条经验 获得超4个赞
您似乎在理解递归方面有困难。
您的方法search()
应该返回一个 int 结果。并且方法本身反复调用自己(使用不同的参数)。事情是:你们都忽略了这些递归调用。
换句话说:真正的答案是让您退后一步并了解递归的含义以及如何正确使用它。作为初学者,你可以尝试改变
search(ar,mid+1,hi,X);
到
return search(ar,mid+1,hi,X);
添加回答
举报
0/150
提交
取消