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;我希望我的代码打印它被调用的次数。
最佳答案
steps
是 funct
中的局部变量,每次调用 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/