递归方法中的基本情况

时间:2010-05-06 17:59:16

标签: recursion

这里有一个关于递归方法中基数或暂停情况的理论问题,它的标准是什么?

我的意思是,没有身体,只是一个返回声明是正常的吗?

总是如下:

if (input operation value)
    return sth;

你有不同的想法吗?

4 个答案:

答案 0 :(得分:8)

递归函数的模式是它们看起来像这样:

f( value ) 
   if ( test value )
      return value
   else
      return f( simplify value )

我认为你不能就一般情况说出更多的话。

答案 1 :(得分:2)

基本情况是终止循环(避免成为无限递归)。在基本情况下没有标准,任何足够简单的输入都可以选择为一个。

例如,这完全有效:

int factorial (int n) {
  if (n <= 5) {
    // Not just a return statement
    int x = 1;
    while (n > 0) {
      x *= n;
      -- n;
    }
    return x;
  } else {
    return n * factorial(n-1);
  }
}

答案 2 :(得分:1)

在某些情况下,您的基本情况是

return literal

在某些情况下,您的基本情况不仅仅是“返回文字”。

不能有“标准” - 这取决于你的功能。

“Syracuse Function”http://en.wikipedia.org/wiki/Collatz_conjecture例如, 没有一个简单的基础案例或一个普通的字面值。

“你有不同的想法吗?”这不是一个明智的问题。

递归必须终止,就是这样。一个简单的尾递归可能有一个返回文字的“基本情况”,或者它可能是一个计算。更复杂的递归可能没有一个简单的“基本情况”。

答案 3 :(得分:0)

完全取决于特定的递归函数。通常,它不能是空的return;语句 - 对于任何返回值的递归函数,基本情况也应该返回该类型的值,因为func(base)也是完美的有效的电话。例如,递归factorial函数将返回1作为基值。

相关问题