文章目录
-
- 1、递归方式打印
-
- 算法思路
- 代码实现
- 运行结果
- 2、非递归方式打印
-
- 算法思路
- 程序的实现
- 运行结果
1、递归方式打印
算法思路
我们用求余的方式丢弃整数的最高位,用除法的操作打印需要输出的
每一位个数。利用递归的原理进行打印。
代码实现
void func(int n){
if (n > 9){
func(n / 10);
}
printf("%d\n",n%10);
}
int main()
{
int n = 1234;
func(n);
return 0;
}
运行结果
1
2
3
4
2、非递归方式打印
算法思路
基本思想和递归的方式一样,不一样的是非递归方式不能像递归方式调用函数本身,这里我们需要引入两个变量对程序进行优化引入count 来计算整数的位数,bill来保存10的n次方,这样就可以根据循环依次得出结果
程序的实现
// 计算整数的位数
int func(int n){
int count = 0;
for (int i = 0; i <= n; i++){
count++;
n = n / 10;
}
return count;
}
int main()
{
int n = 1234;
int bill = 1;
int ret = func(n);
for (int i = 0; i < ret; i++){
bill *= 10;
}
while (n != 0){
printf("%d\n", n / bill);
n = n % bill;
bill = bill / 10;
}
system("pause");
return 0;
}
运行结果
1
2
3
4
请按任意键继续. . .