我的朋友和我正在争论我们分析家庭作业的算法是否是尾递归的,但他坚持认为。所以,算法看起来像这样:
SomeAlgo(x)
{
x--;
if (x > 1)
{
SomeAlgo(x);
}
else
{
return x;
}
}
我告诉他这不是尾递归,因为SomeAlgo(x)不是最后要执行的语句。我们需要一个基础案例,但我们不需要。如果我们有一个基本案例,那么基本案例中的代码将是第一个要执行的代码,并且对自身的调用(返回要返回的值)将是最后一个。
如果它不是尾递归的,你能告诉我需要做些什么来使其尾递归吗?
答案 0 :(得分:3)
如果X大于1,则SomeAlgo(x)是要执行的最后一个语句。