这里是目录哦
- 题目
 - 代码
 - 运行截图
 - 递归思路
 - 递归停止条件
 - 如何实现“按顺序”
 - 悟了✨
 - 加油🎉
 
题目
按顺序打印一个整数的每一位。
代码
#include<stdio.h>
void Print(int n)
{
	if (n > 9)//递归停止条件
	{
		Print(n / 10);//不断趋近递归停止条件
	}
	printf("%d ", n % 10);
}
int main()
{
	int m = 0;
	scanf("%d", &m);
	Print(m);
	return 0;
}
 
运行截图

递归思路
以m=198为例:
 
递归停止条件
可以发现,if (n > 9)//递归停止条件和Print(n / 10);//不断趋近递归停止条件都含有同一个字母n。通过控制那个相同的字母逐渐符合“停止条件”,来控制递归函数的停止。
更多递归练习和理解,可参考(这不是很难的题,你可以懂):
 (弟)递归•斐波那契数、n的k次方
如何实现“按顺序”
以m=198为例:
 Print函数中的printf("%d ", n % 10);只有被/到只剩一位数的1才能打印。其他的都会因为进入if而进入不断的递归,直到打印了1以后才往回走。所以可以实现按顺序打印。
悟了✨
其实递归不要想得太复杂,只要是不断使用同一个函数,就可以考虑递归,除非有明显的缺陷。所谓的缺陷就是“递归反而会让程序更麻烦”的情况。
一个问题直接求解时不好求解,如果可以将其划分成其子问题,并且子问题和原问题有相同的解法时,就可以使用递归的方式解决。
决定使用递归后,只需要基于你的目的,考虑开头第几个递归函数的执行思路就可以了【给自己举简单的具体例子帮助理解】,因为其余都一样。比如,你要按顺序打印,那就会想到用n % 10,只有当n是个一位数时,才可以打印出n。那就是说,10以及大于10的都不可以打印,即if (n > 9),无法实现目的的就放进递归。
递归中一般要用if,因为要写递归停止条件。并且递归函数中最后执行的一定是停止条件情况下的操作。
加油🎉
所有值得做的事,都值得把它做好。
 你又向目标迈进了哦!
❤️❤️❤️恭喜! 恭喜! 又收了一名小弟! ❤️❤️❤️



















