一个正整数n,如果是个位数,直接输出n就完成了任务,这是基例。如果n是多位数,可以把n视为“个位数”和“个位之外的其余各位数”两部分构成。其中,“个位数”的值为n%10,“个位之外的其余各位数”的值为n//10。如此,问题求解变成输出n%10后,再把n//10的各位数字依次输出(递归调用),这是链条。python
时间: 2023-05-19 08:01:46 浏览: 147
代码如下:
def print_digits(n):
if n < 10:
print(n)
else:
print_digits(n // 10)
print(n % 10)
# 测试
print_digits(12345) # 输出 1 2 3 4 5
相关问题
python2.0 输入正整数n,逆序输出n的每一位。 要求:自定义递归函数reversedNum(N),返回N每位的逆序。 提示:数的逆序输出的递归公式如下: 如果N<10,直接输出N(使用print(N),而不是return N), (N<10,即N为个位数,则直接输出N); 如果N>=10,先输出N的个位数,即N ,然后调用reversedNum(N/10)逆序输出其他位上的数。 (N>=10,即N为多位数,则先输出个位上的数,再输出其他各个位数)。
好的,我理解了你的问题。请看下面的代码实现:
```python
def reversedNum(N):
if N < 10:
print(N)
else:
print(N % 10, end='')
reversedNum(N // 10)
n = int(input("请输入一个正整数:"))
print("逆序输出:", end='')
reversedNum(n)
```
这个函数会先判断输入的数 `N` 是否小于 10,如果是,则直接输出 `N` 的值。如果不是,则先输出 `N` 的个位数,即 `N % 10`,然后递归调用 `reversedNum` 函数,处理剩余的数 `N//10`。在输出时使用了 `end=''`,是为了让 `print` 函数不换行输出。
希望这个代码能够帮到你!
循环输入多个正整数,输出它的位数C语言
在C语言中,你可以通过循环结构结合位运算来计算一个正整数的位数。这里有一个简单的示例,展示了如何实现这个功能:
```c
#include <stdio.h>
// 函数来获取一个整数的位数
int getBitCount(int num) {
int count = 0;
while (num > 0) {
count++;
num >>= 1; // 右移一位,相当于除以2取整,直到num变为0
}
return count;
}
int main() {
int number;
printf("请输入正整数(以空格分隔多个数字): ");
scanf("%d", &number);
// 如果输入的是多个数字,可以使用数组或持续读取,这里假设只有一个
while (scanf("%d", &number) == 1) { // 检查是否成功读入
int bit_count = getBitCount(number);
printf("数字 %d 的位数是 %d\n", number, bit_count);
}
return 0;
}
```
在这个程序中,`getBitCount`函数会不断地将输入的数右移一位,直到它变成0。在这个过程中,计数器就记录了原数的位数。注意,如果输入是连续的多个正整数,你需要使用一个循环来处理它们。
阅读全文