题目要求:输入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;
下面是一些思路的脉络图:
总结,可以套娃 有终止条件 不断迭代的 就可以上递归!