C语言如何用C语言递归实现:依次打印数字中的每一位?
Posted 一起学编程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言如何用C语言递归实现:依次打印数字中的每一位?相关的知识,希望对你有一定的参考价值。
今天分享一下C语言课会讲到了一道非常经典的递归题目!
代码如下:
#include <stdio.h>
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语句
这才有了最开始我贴的结果
程序依次打印了每一位的数字
如果这篇博客对你有帮助,还请点赞收藏支持一下!万分感谢!
-----------------------------------
想学习更多编程基础知识可以关注博主的B站账号:
以上是关于C语言如何用C语言递归实现:依次打印数字中的每一位?的主要内容,如果未能解决你的问题,请参考以下文章