我是递归的新手,想要知道下面的代码是否可以被称为递归函数,尽管函数调用自己并不确定它是否满足基本和递归情况的条件。
以下功能根据行程的起点对机票进行分类(假设行程有多个过渡,并且票据像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;
}
}
答案 0 :(得分:2)
每个调用自身的函数都是递归的(无论是否有基本情况)。
没有基本情况的递归函数总是无限递归(并不是缺少基本情况必然会阻止无限递归 - 可能是函数的执行路径之一永远不会到达基本情况)。
您的函数有一个基本案例 - sortedList.size() == shuffled.size()
。