c语言利用函数的递归调用求一个整数各个位上数字的和
时间: 2024-02-23 22:02:18 浏览: 23
好的,C语言中也可以利用函数的递归调用来实现这个功能。下面是一个示例代码:
```c
#include <stdio.h>
int sum_digits(int n);
int main() {
int n;
printf("请输入一个整数:");
scanf("%d", &n);
printf("各位数字之和为:%d\n", sum_digits(n));
return 0;
}
int sum_digits(int n) {
if (n < 10) {
return n;
} else {
return n % 10 + sum_digits(n / 10);
}
}
```
这个程序中,sum_digits 函数实现了递归求解整数各个位上数字之和的功能。与 Python 版本的代码类似,它的思路也是先判断输入的整数 n 是否小于 10,如果是,则直接返回 n 作为结果;否则,将 n 的个位数加上剩余数位的和(通过递归调用 sum_digits 函数)作为结果返回。
相关问题
用C语言,利用递归求四位整数的各个位上的数字,数字间有一个空格
可以使用以下代码实现:
```c
#include <stdio.h>
void print_digits(int n) {
if (n < 10) { // 如果 n 是一位数,直接打印
printf("%d ", n);
} else {
print_digits(n / 10); // 递归处理高位数字
printf("%d ", n % 10); // 打印当前位数字
}
}
int main() {
int n;
printf("请输入一个四位整数:");
scanf("%d", &n);
print_digits(n);
printf("\n");
return 0;
}
```
在这个程序中,`print_digits` 函数使用递归来分解整数的各个位上的数字,处理高位数字时先递归调用自身,直到处理完最低位数字。然后,打印当前位数字,并返回上一层递归。最后,在 `main` 函数中输入一个四位整数,调用 `print_digits` 函数打印各个位上的数字,数字之间有一个空格。
利用函数嵌套调用,递归调用求两个数的阶乘和c语言
可以使用递归调用来实现求两个数的阶乘和,代码如下:
```c
#include <stdio.h>
int factorial(int n) {
if (n == 0 || n == 1) { // 0的阶乘和1的阶乘都为1
return 1;
} else {
return n * factorial(n-1); // 递归调用
}
}
int sumFactorial(int m, int n) {
if (m > n) { // 如果m>n,则交换m和n的值
int temp = m;
m = n;
n = temp;
}
int sum = 0;
for (int i = m; i <= n; i++) {
sum += factorial(i); // 调用阶乘函数求和
}
return sum;
}
int main() {
int m, n;
printf("请输入两个整数m和n(m<=n):");
scanf("%d %d", &m, &n);
int result = sumFactorial(m, n);
printf("%d到%d的阶乘和为:%d\n", m, n, result);
return 0;
}
```
在这个程序中,我们先定义了一个名为`factorial`的函数,用于求一个数的阶乘。然后定义了另一个名为`sumFactorial`的函数,用于求两个数的阶乘和。在`sumFactorial`函数中,我们首先用一个for循环来遍历从m到n的每一个数,然后调用`factorial`函数来求它们的阶乘,并将结果累加到`sum`变量中。最后,返回`sum`作为函数的结果。在`main`函数中,我们读入m和n的值,调用`sumFactorial`函数来求阶乘和,并将结果输出到屏幕上。