任给十进制的正整数,请从高位到低位逐位输出各位数字。用一个循环算法再用一个递归算法
时间: 2024-10-12 16:12:41 浏览: 103
对于任给的十进制正整数,你可以通过循环或递归的方式逐位输出其每一位。以下是两种算法的简要说明:
**循环算法:**
```python
def print_decimal_digits_loop(num):
while num > 0:
digit = num % 10 # 取余得到当前位的数字
print(digit)
num //= 10 # 向左移除一位
# 示例:
print_decimal_digits_loop(12345)
```
在这个例子中,我们不断取数`num`的个位数,打印出来,然后将`num`更新为其去掉个位后的值。
**递归算法:**
```python
def print_decimal_digits_recursion(num, index=0):
if index >= len(str(num)): # 递归终止条件:当索引超过字符串长度时
return
digit = num // (10 ** index) # 取模操作得到当前位
print(digit)
print_decimal_digits_recursion(num % (10 ** index), index + 1)
# 示例:
print_decimal_digits_recursion(12345)
```
这里,递归函数首先取出第`index`位的数字,然后递归地处理剩下的位。
相关问题
循环算法设计:本题目中要求“从高位到低位”逐位输出各位数字,但由于并不知道正整数的位数,因此算法还是“从低位到高位”逐位求出各位数字比较方便。这样就不能边计舞边输出而需要用数组保存计算的结果,最后倒着输出. 用c语言编程完成任给十进制的正整数,请从高位到低位逐位输出各位数字
循环算法设计是为了处理那些不需要递归、而是通过迭代来解决问题的情况。对于要求从高位到低位输出十进制正整数的各位数字,可以使用循环结构结合数组来存储中间结果。以下是用C语言实现的示例:
```c
#include <stdio.h>
#define MAX_DIGITS 10
int main() {
int num, digit[MAX_DIGITS] = {0};
int index = 0;
printf("请输入一个十进制正整数: ");
scanf("%d", &num);
while (num > 0) {
digit[index++] = num % 10; // 取余得到每一位
num /= 10; // 更新num,去掉最低位
}
// 从高位到低位输出
for (int i = index - 1; i >= 0; i--) {
printf("%d", digit[i]);
}
printf("\n");
return 0;
}
```
在这个程序中,我们首先读取用户的输入,然后用while循环不断地取余数并将结果存入数组`digit[]`中,直到`num`变为0。接着,用for循环逆序遍历数组,将每位数字依次输出。
递归算法设计:与例7不同,递归算法是先递归地求 n\10 的个位数字,然后再求个位数字n的个位数字并输出。这样输出操作是在回溯时完成的。递归停止条件与例7相同为n<10。 用c语言编程完成任给十进制的正整数,请从高位到低位逐位输出各位数字
递归算法是一种自我调用的策略,在解决某些问题时,将大问题分解成小问题,直至达到基本情况。针对从高位到低位输出十进制正整数的各位数字,我们可以使用递归来实现,这里是一个简单的C语言实现:
```c
#include <stdio.h>
// 递归函数,返回个位数字
int getDigit(int n, int base) {
if (n < base) {
return n; // 基本情况,直接返回个位数字
} else {
return getDigit(n / base, base) * 10 + n % base; // 递归调用,先处理高位再取个位
}
}
void printDigits(int num) {
while (num > 0) {
printf("%d", getDigit(num, 10)); // 递归获取并输出个位数字
num /= 10;
}
}
int main() {
int input;
printf("请输入一个十进制正整数: ");
scanf("%d", &input);
printDigits(input);
printf("\n");
return 0;
}
```
在这个递归函数`getDigit()`中,当`n`小于10(即个位数),就返回`n`;否则,它会递归地找到更高位的数字,然后加上当前个位。`printDigits()`函数则负责调用递归函数并打印所有数字。
阅读全文
相关推荐















