我和我的朋友正在争论我们必须为作业分析的算法是否是尾递归的,但他坚持认为是。所以,算法看起来像这样:
SomeAlgo(x)
{
x--;
if (x > 1)
{
SomeAlgo(x);
}
else
{
return x;
}
}
我告诉他这不是尾递归,因为 SomeAlgo(x) 不是要执行的最后一条语句。我们需要一个基本案例,但我们不需要。如果我们有一个基本案例,基本案例中的代码将是第一个被执行的事情,而对自身的调用(返回要返回的值)将是最后一个。
如果它不是尾递归的,你能告诉我需要做什么才能使它成为尾递归吗?