编写一个递归函数,将一个正整数的每一位取出来并按从高位到低位的顺序依次输出,数字之间加上短横线。 例如:正整数为123,则输出1-2-3。 提示:考虑用递归函数实现该任务。
时间: 2024-01-22 07:19:45 浏览: 110
以下是 Python 代码实现:
```
def print_digits(n):
if n < 10:
print(n, end='')
else:
print_digits(n // 10)
print('-', n % 10, sep='', end='')
n = int(input('请输入一个正整数:'))
print_digits(n)
```
首先定义一个递归函数 `print_digits`,该函数的参数是一个正整数 `n`。如果 `n` 是个一位数,直接输出即可;否则,递归地输出 `n` 的除个位以外的所有位,然后输出个位并在前面加上短横线。注意,为了保证数字之间输出短横线,需要在 `print` 函数中指定 `end` 参数为 `'-'`。
相关问题
编写一个递归函数,将一个正整数的每一位取出来并按从高位到低位的顺序依次输出,数字之间加上短横线。
以下是 Python 语言的实现代码:
```python
def print_digits(n):
if n < 10:
print(n)
else:
print_digits(n // 10)
print("-")
print(n % 10)
```
这个函数首先检查输入的数字是否小于 10,如果是,直接输出该数字。否则,使用递归调用将该数字的第一位和剩余部分分离。然后递归调用该函数来处理剩余部分,最后在每次递归调用返回时输出一个短横线并输出该数字的最后一位。
c++编写一个递归函数,将一个正整数的每一位取出来并按从高位到低位的顺序依次输出,数字之间加上短横线。
以下是C++递归函数的实现:
```cpp
#include <iostream>
using namespace std;
void printDigits(int n) {
if (n < 10) { // 如果只剩一位数字
cout << n; // 直接输出该数字
} else { // 否则递归输出高位数字
printDigits(n / 10);
cout << "-" << n % 10; // 输出当前位数字并加上短横线
}
}
int main() {
int n;
cout << "请输入一个正整数:";
cin >> n;
cout << "该数字的每一位为:";
printDigits(n);
cout << endl;
return 0;
}
```
该程序会从输入读取一个正整数,然后调用`printDigits`函数递归输出该数字的每一位。在递归过程中,每次先递归输出高位数字,然后输出当前位数字并加上短横线。最终输出的数字是从高位到低位的顺序。例如,输入12345,输出为1-2-3-4-5。
阅读全文