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


慕桂英4014372
浏览 442回答 1
1回答

温温酱

您似乎在理解递归方面有困难。您的方法search()应该返回一个 int 结果。并且方法本身反复调用自己(使用不同的参数)。事情是:你们都忽略了这些递归调用。换句话说:真正的答案是让您退后一步并了解递归的含义以及如何正确使用它。作为初学者,你可以尝试改变search(ar,mid+1,hi,X);到return&nbsp;search(ar,mid+1,hi,X);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java