首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在c++中使用递归时,如何避免重新初始化变量?

在c++中使用递归时,如何避免重新初始化变量?
EN

Stack Overflow用户
提问于 2015-10-04 11:56:40
回答 1查看 341关注 0票数 0

所以我刚刚开始学习递归,我对如何避免这个问题感到困惑。我将编写一个需要存储变量的函数,例如sum,但我必须在函数中声明该变量,以便每次进行递归调用时,该变量都会再次初始化。我该如何解决这个问题呢?我想是一些短小的辅助函数,但我不是很确定。

代码语言:javascript
复制
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);
}
EN

回答 1

Stack Overflow用户

发布于 2015-10-04 12:00:20

如果你提供了你的代码将会有所帮助。但是,通常您需要传入任何内容并返回结果。

举个例子:

代码语言:javascript
复制
int Sum(Node* node)
{
    if (node == 0)
        return 0;
    return node->value + Sum(node->next);
}

编辑

下面是我将在您的示例中执行的操作:

代码语言:javascript
复制
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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32929884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档