c++ - 如何返回 C++ 中递归函数被调用的次数?

标签 c++ c++11

void funct(int n)
{
    int steps = 0;
    if(n != 1){
        steps++;
        if((n % 2) == 0){
            funct(n/2);
        }
        else if((n % 2) != 0){
            funct((3*n + 1));
        }
        cout << steps << " ";

    }
    
}

我尝试了这段代码,但每次都打印 1;我希望我的代码打印它被调用的次数。

最佳答案

stepsfunct 中的局部变量,每次调用 funct 都有自己的拷贝。您需要在对 funct 的所有调用中传递一个变量才能正确计数。

void funct(int n, int& steps)
{
    if(n != 1){
        steps++;
        if((n % 2) == 0){
            funct(n/2, steps);
        }
        else if((n % 2) != 0){
            funct((3*n + 1), steps);
        }
    }
}
int main()
{
   int steps = 0;
   funct(5, steps);
   cout << steps << "\n";
}

关于c++ - 如何返回 C++ 中递归函数被调用的次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71285386/

相关文章:

c++ - 与非 C++ 代码的链接

c++ - Visual Studio 2015 中的其他包含目录不起作用

C++迭代具有混合字符长度的utf-8字符串

c++ - switch 语句导致发送两条消息

C++ 信号量 (semi *lockfree*),我在哪里可以得到一个?

c++ - 在C/C++中,链表只有头指针分配在栈中,其他节点分配在堆中。这可能会导致内存泄漏?

c++ - 通过标识函数后,左值引用变得无效

c++ - 对于潜在的 constexpr 对象,所有比较运算符都应该是 constexpr

C++ 特性,如 std::set,允许重复

c++ - 向类添加复制构造函数