(弟弟14)递归•按顺序打印一个整数的每一位

题目

按顺序打印一个整数的每一位。

代码

#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,因为要写递归停止条件。“递归停止条件”更准确地说是“往下递推的停止条件 和 往上回归的开始条件”,即递归停止条件是 往下递推 和 往上回归 的分界点。

加油🎉

所有值得做的事,都值得把它做好。
你又向目标迈进了哦!

❤️❤️❤️恭喜! 恭喜! 又收了一名小弟! ❤️❤️❤️

  • 12
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值