所以我刚刚开始学习递归,我很困惑如何避免这个问题。我将编写一个需要存储变量的函数,如sum,但我必须在函数中声明变量,因此每次进行递归调用时,变量都会再次初始化。我怎样才能解决这个问题?我认为一个简短的辅助功能,但我不太确定。
int fib_tail(int n)
{
int fibResult = 0;
int x = 0; // used for bottom-up approach
if (n == 0) {
return 0;
}
if (n == 1) {
return 1;
}
if (n > 1 && x <= n) {
fibResult += fib(x);
}
++x;
return fib_tail(n);
}
答案 0 :(得分:4)
如果您提供了代码,这将有所帮助。但是通常你会传递你需要的任何东西并返回结果。
一个例子:
int Sum(Node* node)
{
if (node == 0)
return 0;
return node->value + Sum(node->next);
}
修改强>
以下是我在你的例子中会做的事情:
int fib_tail(int n)
{
if (n <= 0) {
return 0;
}
if (n == 1) {
return 1;
}
return fib_tail(n-1) + fib_tail(n-2);
}
Ide one:http://ideone.com/hS2s38