递归方法中的基本情况

Lis*_*isa 9 recursion

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

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

是否总是如下:

if (input operation value)
    return sth;
Run Code Online (Sandbox Code Playgroud)

你有不同的想法吗?

小智 11

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

f( value ) 
   if ( test value )
      return value
   else
      return f( simplify value )
Run Code Online (Sandbox Code Playgroud)

关于一般情况,我认为你不能说太多.

  • @Solace看起来更像是伪代码,而不是任何特定的编程语言 (5认同)

ken*_*ytm 4

基本情况是终止循环(避免成为无限递归)。基本情况没有标准,任何足够简单、可以精确解决的输入都可以作为标准。

例如,这是完全有效的:

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);
  }
}
Run Code Online (Sandbox Code Playgroud)