这个程序尾递归吗?

时间:2013-05-19 15:41:21

标签: recursion language-agnostic

我的朋友和我正在争论我们分析家庭作业的算法是否是尾递归的,但他坚持认为。所以,算法看起来像这样:

SomeAlgo(x)
{
   x--;

   if (x > 1)
   {
      SomeAlgo(x);
   }
   else
   {
      return x;
   }
}

我告诉他这不是尾递归,因为SomeAlgo(x)不是最后要执行的语句。我们需要一个基础案例,但我们不需要。如果我们有一个基本案例,那么基本案例中的代码将是第一个要执行的代码,并且对自身的调用(返回要返回的值)将是最后一个。

如果它不是尾递归的,你能告诉我需要做些什么来使其尾递归吗?

1 个答案:

答案 0 :(得分:3)

如果X大于1,则SomeAlgo(x)要执行的最后一个语句。