c++ - 递归打印 C++

标签 c++

int main()
{
    f(12345);
    return 0;
}

void f(long n)
{
    cout << n%10;
    if(n!=0)
    {
        f(n/100); cout <<n%10;
    }
}

我不明白为什么调用 f(12345) 会打印出“5310135”,我刚开始学习递归,但我不明白它是如何打印出来的。我已经编译并运行了程序,所以我知道它打印的值。我卡在 5310,然后我不知道最后 3 位数字是怎么出现的,有人可以向我解释一下吗?

最佳答案

第二个cout将在递归展开时执行,即从最后一次递归调用到第一次递归调用。

  f(12345)          
     print 5
     f(123) ----------> f(123)
     print 5                print 3
                            f(1)  -------->  f(1)
                            print 3             print 1
                                                f(0)  ----->   f(0)
                                                print 1           print 0

关于c++ - 递归打印 C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44744663/

相关文章:

java - JNA 如何包装用 C++ 编写的接口(interface)

c++ - 代码问题将字符串转换为图表excel

android - 无法使用 Android NDK 构建 gstreamer

c++ - 正则表达式无法通过 getline() 输入正常工作

c++ - opencv2/photo/photo.hpp c++​​ 的条件包含取决于 OpenCV 版本

C++ 隐式复制构造函数和赋值运算符

c++ - 错误 : conversion from 'const char [5]' to non-scalar type in c++

c++ - 如果调试运行正常但发布崩溃怎么办

c++ - 读取类变量

c++ - 模拟 istringstream 的 ferror(FILE *)?