c++ - 有人能解释一下为什么输出是 C++ 递归函数吗

标签 c++ recursion output

运行这段代码后我不明白为什么

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/

相关文章:

c - C 语言的快速排序算法

return - 函数输出一个列表但返回 nil

c - R: 如何让.C 调用更新输出变量?

c++ - 不能使用 CV_32UC1

c++ - 使用指针或引用返回 Boost 矩阵有优势吗?

JavaScript 二叉搜索树中序遍历返回未定义作为答案的一部分

sql - SQL Server 2008 R2 中父/子类型记录的完整路径转储列表

java - 使用导向器跨 C++ 和 Java 的 SWIG 多态性中的内存泄漏

c++ - 实现一个依赖于姊妹类的类

c - 如何在 C 中定位输入文本光标?