将正确的return语句添加到函数中

时间:2015-02-04 12:25:52

标签: java

答案可能很明显,但即使在谷歌搜索后,我仍然可以找到解决此问题的正确方法。我知道我必须在函数的最后添加一个return语句,以便它可以完成,但是什么样的?

以下程序实现了一种算法,该算法可以找到阵列列表中第i个最小的元素

    public int search(ArrayList<Integer> a, int i){
    ArrayList<Integer> smaller_than = new ArrayList<Integer>();
    ArrayList<Integer> greater_than = new ArrayList<Integer>();
    int pivot = a.get(i);

    for(int j = 0; j < a.size(); j++) {
        if (a.get(j) <= pivot){
            smaller_than.add(a.get(j));}
        if (a.get(j) > pivot){
            greater_than.add(a.get(j));}}

    if (smaller_than.size() == i)
        return smaller_than.get(i);
    else if (smaller_than.size() < i)
        return search(greater_than, i-smaller_than.size());
    else if (smaller_than.size() > i)
        return search(smaller_than, i);
}

我最近无法在最后添加return null,所以你能帮我找到解决方案吗?

1 个答案:

答案 0 :(得分:5)

只需将上一个if else转为else,因为如果它相同或更小,则必须更大:

if (smaller_than.size() == i)
    return smaller_than.get(i);
else if (smaller_than.size() < i)
    return search(greater_than, i-smaller_than.size());
else
    return search(smaller_than, i);