这里有一个关于递归方法中基数或暂停情况的理论问题,它的标准是什么?
我的意思是,没有身体,只是一个返回声明是正常的吗?
总是如下:
if (input operation value)
return sth;
你有不同的想法吗?
答案 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
作为基值。