c++ - 有人可以解释一下为什么是输出,C++ 递归函数
问题描述
我不明白为什么在运行此代码后
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;
}
推荐阅读
- python - Flask-Reatful 单元测试响应 404 Not Found
- c# - C#拆分字符串直到遇到某些文本
- wordpress - Wordpress Genesis,如果在博客文章中
- c# - 如何从 .Net 框架注入 Microsoft.Extensions.Logging
- javascript - ReatctJS - 普通的事件监听器绑定顺序
- ruby - '=>' 的 Ruby 语法
- python - 在 k 个数组中找到第 a 到第 b 个最小元素的有效方法
- crystal-reports - 如果字段 A 或字段 B 等于 X
- c# - 如何制作指向另一个动作 C# 的动作?
- r - 有什么方法可以根据条件在 Shiny 中将面板变灰?