Recursion 递归方法中的基本情况

Recursion 递归方法中的基本情况,recursion,Recursion,这里的一个理论问题是关于递归方法中的基本或停止情况,它的标准是什么 我的意思是,没有身体在里面,只是一个返回语句,这正常吗 它是否总是像下面这样: if (input operation value) return sth; 您对此有不同的想法吗?基本情况是终止循环(避免成为无限递归)。基本情况下没有标准,任何简单到可以精确求解的输入都可以选择为一个 例如,这是完全有效的: int factorial (int n) { if (n <= 5) { // Not ju

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

我的意思是,没有身体在里面,只是一个返回语句,这正常吗

它是否总是像下面这样:

if (input operation value)
    return sth;

您对此有不同的想法吗?

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

例如,这是完全有效的:

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);
  }
}
int阶乘(int n){
if(n0){
x*=n;
--n;
}
返回x;
}否则{
返回n*阶乘(n-1);
}
}

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

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

关于一般情况,我认为你不能说得更多。

这完全取决于特定的递归函数。一般来说,它不能是空的
返回语句-对于任何返回值的递归函数,基本大小写也应该返回该类型的值,因为
func(base)
也是一个完全有效的调用。例如,递归的
阶乘
函数将返回一个
1
作为基值。

在某些情况下,基值为

return literal

在某些情况下,基本情况并不是简单地“返回一个文本”

不可能有“标准”——这取决于您的功能

例如“雪城功能”, 没有简单的基本情况或简单的文本值

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


递归必须终止,仅此而已。一个平凡的尾部递归可能有一个返回文本的“基本情况”,也可能是一个计算。更复杂的递归可能没有一个微不足道的“基本情况”

我说我在问一个理论问题,我的意思是,如果我想教递归,我不会使用你以前的代码,我知道这是一种有效的方法,但它没有使递归和基本情况概念足够清楚,你怎么看?递归方法不必返回值。当然是真的。但是,我可以说:对于返回
void
的递归方法,基也将返回
void
。)这是哪种编程语言?@Solace看起来更像伪代码,而不是任何特定的编程语言这是迄今为止解释递归方法的最佳方式。我使用这种方法来合并两个链表实现。为了进一步扩展这个答案,递归函数中的基本情况也可能是
O(n)
大大低于实际函数的
O(n)
。因此返回一个更简单(不太复杂)的操作。