龙空技术网

「C语言」如何用C语言递归实现:依次打印数字中的每一位?

C语言编程 856

前言:

目前你们对“c语言组合数递归”大概比较着重,同学们都需要剖析一些“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语句

这才有了最开始我贴的结果

程序依次打印出了每一位的数字

如果这篇博客对你有帮助,还请点赞收藏支持一下!万分感谢!

-----------------------------------

为了帮助大家,轻松,高效学习C语言/C++,给大家分享我收集的资源,从最零基础开始的,帮助大家在学习C语言的道路上披荆斩棘!

编程学习书籍分享:

编程学习视频分享:

整理分享(多年学习的源码、项目实战视频、项目笔记,基础入门教程)最重要的是你可以在群里面交流提问编程问题哦!

对于C/C++感兴趣可以关注小编在后台私信我:【编程交流】一起来学习哦!可以领取一些C/C++的项目学习视频资料哦!已经设置好了关键词自动回复,自动领取就好了!

标签: #c语言组合数递归