递归方式实现打印一个整数的每一位

这篇博客介绍如何利用递归算法实现打印一个整数的每一位。通过将数字模10得到末位数,除10获取其他数位,递归地进行此操作,当数字小于10时结束递归。思路清晰,结合示例和脉络图解释了递归过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

题目要求:输入1234 打印1 2 3 4

这里需要明确一下递归的条件:1.有终止递归的条件; 2.循环逐渐趋于终止条件;

#include<stdio.h>

//递归方式实现打印一个整数的每一位
// 1234 -> 1 2 3 4 
//分析:1234可以%10 得到末位 4 和123;同样 123 也可以%10 得到3 ;12 %10得到 2 ;1%10得到 1 ;
//同样的方法一直再被调用,并且逐渐趋于终止,满足递归的思想;

void solute(int a) {
	if (a > 9) {	
		solute(a / 10); 
		printf("%d ", a % 10); 
		return;		    
	}
	else {
		printf("%d ",a%10);
		return ;	
	}
}

void main() {
	printf("请输入想要拆解的整数\n");
	int num = 0;
	scanf_s("%d ",&num);
	solute(num);
}

简单的整理一下思路: 我们可以通过给任何一个数模10 得到它的末位数;也可以通过除10来获取除了末位数以外的其他数位的数字;
那么,以1234为例,1234%10 = 4; 1234/10 = 123;
如果再对123取同样的操作,就可以得到3 并获取到12;
同样的方法,反复调用,不就是传说中的递归吗?

以下图为例可以发现:不断地套用一个方法,不断地取末位 , 终止条件就是这个数字小于10 的时候 直接取模 就return;
在这里插入图片描述
下面是一些思路的脉络图:
在这里插入图片描述
总结,可以套娃 有终止条件 不断迭代的 就可以上递归!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值