所以我刚刚开始学习递归,我对如何避免这个问题感到困惑。我将编写一个需要存储变量的函数,例如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);
}发布于 2015-10-04 12:00:20
如果你提供了你的代码将会有所帮助。但是,通常您需要传入任何内容并返回结果。
举个例子:
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 1:http://ideone.com/hS2s38
https://stackoverflow.com/questions/32929884
复制相似问题