1

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

SomeAlgo(x)
{
   x--;

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

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

如果它不是尾递归的,你能告诉我需要做什么才能使它成为尾递归吗?

4

1 回答 1

3

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

于 2013-05-19T15:42:45.967 回答