用c语言写一个递归函数,输入一个非负整数,返回组成它的数字之和。例如调用diorSum{1729),则应该返回1+7+2+9,他的和是19。
时间: 2024-12-13 22:15:18 浏览: 25
在C语言中,我们可以使用递归函数来解决这个问题。递归是一种函数调用自己的方法,非常适合于像分解数字这样的问题。下面是一个示例递归函数,用于计算非负整数各位数字之和:
```c
#include <stdio.h>
// 递归函数,输入一个非负整数,返回组成它的数字之和
int digitSum(int num) {
// 基本情况:如果num为0,说明已分解到最小单位,返回该数字
if (num == 0)
return 0;
// 递归情况:将num的最后一位取出并累加,然后去掉这一位
else
return (num % 10) + digitSum(num / 10);
}
int main() {
int number = 1729;
int sum = digitSum(number);
printf("组成数字 %d 的和为:%d\n", number, sum);
return 0;
}
```
在这个代码中,`digitSum`函数接收一个整数`num`作为输入,每次递归调用都将`num`除以10取余得到个位数字,并将其添加到当前和上,同时递归地对剩下的十位数继续操作,直到`num`变为0,这时结束递归。
相关问题
C语言编程:)写一个递归函数DigitSum(n),输入一个非负整数,返回组成它的数字之和,例如,调用DigitSum(1729),则应该返回1+7+2+9,它的和是19。
好的,下面是 C 语言递归函数 `DigitSum` 的实现:
```c
#include <stdio.h>
int DigitSum(int n) {
if (n < 10) {
// 递归结束条件:当 n 是一位数时,返回 n。
return n;
} else {
// 递归调用:将 n 的每一位数字相加并返回。
return n % 10 + DigitSum(n / 10);
}
}
int main() {
int n = 1729;
int sum = DigitSum(n);
printf("Digit sum of %d is %d\n", n, sum);
return 0;
}
```
在 `main` 函数中,我们调用 `DigitSum` 函数,传入参数 `n`,并将返回值存储在变量 `sum` 中。最后输出结果即可。
写一个递归函数,输入一个非负整数,按照顺序输出它的每一位的值,用c语言。
在C语言中,你可以使用递归函数来实现这个功能。下面是一个简单的示例,它定义了一个名为`print_digits`的函数,用于打印给定非负整数的每一位:
```c
#include <stdio.h>
// 递归函数,接收整数n和一位数组作为参数
void print_digits(int n, int* digits) {
// 如果数字n还有每一位,则将其输出并递归处理下一位
if (n > 0) {
printf("%d", digits[n / 10]); // 输出当前位的数值
print_digits(n % 10, digits); // 调用自身处理下一位
}
}
int main() {
// 输入一个非负整数
int num;
printf("请输入一个非负整数: ");
scanf("%d", &num);
// 初始化一个临时数组存储每一位
int digits[10];
while (num > 0) {
digits[num % 10] = num % 10; // 从右向左存储每一位
num /= 10; // 移除最低位
}
// 反转数组,因为递归是从高位开始的
for (int i = 0, j = 9; i < j; i++, j--) {
int temp = digits[i];
digits[i] = digits[j];
digits[j] = temp;
}
// 开始打印数字
print_digits(*digits, digits);
return 0;
}
```
当你运行此程序时,它会提示用户输入一个非负整数,然后按照顺序依次输出每位的值。
阅读全文