C语言递归的运行顺序

今天分享一下c语言课会讲到了一道非常经典的递归题目!
代码如下:
                                    #include void print(int n){ if (n > 9) print(n / 10); printf(%d , n % 10);}int main(){ int num = 0; scanf(%d, &num); print(num); return 0;} 结果如下
运行顺序
谈到递归的时候,最重要的就是要弄明白它究竟是怎么运行的
一般c语言上课时讲的方法非常直观的表示了它的运算顺序
这里我用粘贴代码块的方式来展示
刚开始执行的是scanf输入,这里不再赘述
            void print(int n){ if (n > 9) print(n / 10); printf(%d , n % 10);} 这一块是我们递归的主体
                              void print(int n){ if (n > 9) print(3578 / 10); if (n > 9) print(357 / 10); printf(%d , 357 % 10);//7 if (n > 9) print(35 / 10); printf(%d , 35 % 10);//5 if (n > 9)//这时候值为3,已经不满足条件 print(3 / 10);//该语句不执行 printf(%d , 3 % 10);//3 printf(%d , 3578 % 10);//8} 看起来可能有点乱,在这基础上加上一些箭头就会清晰了
起初我的想法是,在进行if判断之后,会先执行下面的printf,即先打印最后一位数8,再向前打印
实际上,if语句后的print函数的嵌套调用是在下一行printf之前的、
也就是说它需要像图中这样完全调用完,直到if判断为假后,才会从后往前运行printf语句
这才有了最开始我贴的结果
程序依次打印了每一位的数字
如果这篇博客对你有帮助,还请点赞收藏支持一下!万分感谢!


带有原生低功耗蓝牙无线连接及NFC触摸配对功能的基板
airpower
rk3566和s905x4参数对比
是德科技提供先进设计和验证解决方案 助力中国本土IC产业持续发展
丽香铁路|历时9年终建成!赛思BITS设备助力“云岭天路”迈入动车时代
C语言递归的运行顺序
汽车照明系统之汽车前灯设计
PLC控制系统接地怎么设计
波音投资油电混合公司 飞机史或将翻开新篇章
微雪电子LPC CortexM4开发板Core4337简介
光固化3D打印材料的特性以及应用
特斯拉新车Model Y3月15日发布,国产售价或在50万左右
盐雾试验箱耐腐蚀性的作用
XY・CN总线供电及通信系统
如何查看一个网站网址的安全性能是怎样的
高速模数转换器精度透视中的直流误差分析
被动元件大宗品流血竞争,大厂下一步?
数字电位器的内部电路原理图
ARM架构Parker系列将作为下一代无人驾驶汽车核心
使用MM32F3270 FSMC驱动TFT-LCD