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

How can I avoid re-initializing a variable when using recursion in c++?

本文关键字:何避免 初始化 变量 c++ 递归      更新时间:2023-10-16

我刚刚开始学习递归,我很困惑如何避免这个问题。我将编写一个需要存储变量的函数,比如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);
}

如果您提供您的代码将会有所帮助。但是,通常情况下,您需要传递所需的内容并返回结果。

一个例子:

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