编写一个递归函数,将一个正整数的每一位取出来并按从高位到低位的顺序依次输出,数字之间加上短横线。c语言
时间: 2024-01-22 12:18:53 浏览: 272
以下是一个递归函数实现:
```c
#include <stdio.h>
void printDigits(int num) {
if (num < 10) { // 递归结束条件
printf("%d", num);
} else {
printDigits(num / 10); // 递归调用
printf("-%d", num % 10);
}
}
int main() {
int num;
printf("请输入一个正整数:");
scanf("%d", &num);
printf("该数的每一位按从高到低顺序依次输出为:");
printDigits(num);
printf("\n");
return 0;
}
```
函数printDigits接受一个正整数作为参数,先判断该数是否小于10,如果是,则直接输出该数;如果不是,则递归调用自身,将num除以10作为新的参数传入,直到num小于10为止。在递归回溯的过程中,每次输出num模10的结果,并在数字之间加上短横线。最后在主函数中调用该函数并输出结果。
相关问题
编写一个递归函数,将一个正整数的每一位取出来并按从高位到低位的顺序依次输出,数字之间加上短横线。
以下是 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。
阅读全文