运行这段代码后我不明白为什么
int n;
int f(int x)
{
int n;
if (x > 0)
{
if (x % 2 == 0)
{
cout << x % 10;
n = 1 + f(x / 10);
}
else
{
n = 1 + f(x / 10);
cout << x % 10;
}
return n;
}
else return 0;
}
int main()
{
cout << ' ' << f(8174);
return 0;
}
我得到 4817 4
而不是 48174
我需要更多的话,但我不知道该说什么:))
最佳答案
在 C++17 之前,参数计算的顺序是未指定的。这意味着编译器可以运行 f(8174)
(及其所有 std::cout << ...
语句)在 std::cout << ' '
之前或之后。
修复相当简单,您需要将 cout 分成两个语句:
int main()
{
std::cout << ' ';
std::cout << f(8174)
return 0;
}
关于c++ - 有人能解释一下为什么输出是 C++ 递归函数吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65353579/