递归函数中的基本和递归情况

时间:2014-05-25 09:05:40

标签: algorithm sorting

我是递归的新手,想要知道下面的代码是否可以被称为递归函数,尽管函数调用自己并不确定它是否满足基本和递归情况的条件。

以下功能根据行程的起点对机票进行分类(假设行程有多个过渡,并且票据像ABC-> EFG,XYZ-> MNO,EFG - > KLM,KLM-& ; XYZ)

public List<Ticket> sortTickets(List<Ticket> shuffled, String source, int n) {

    if (sortedList.size() != shuffled.size()) {
        n = (n < 0) ? shuffled.size() - 1 : n;
        if (shuffled.get(n).source == source) {
            sortedList.add(shuffled.get(n));
            source = shuffled.get(n).destination;
            return sortTickets(shuffled, source, n - 1);

        } else {
            return sortTickets(shuffled, source, n - 1);
        }
    } else {
        return sortedList;
    }

}

1 个答案:

答案 0 :(得分:2)

每个调用自身的函数都是递归的(无论是否有基本情况)。

没有基本情况的递归函数总是无限递归(并不是缺少基本情况必然会阻止无限递归 - 可能是函数的执行路径之一永远不会到达基本情况)。

您的函数有一个基本案例 - sortedList.size() == shuffled.size()