有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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执行


共 (1) 个答案

  1. # 1 楼答案

    您似乎很难理解递归

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

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

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

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