介绍
递归(Recursion)是一种编程技术,其中函数调用自身,使得函数能够重复执行,直到满足基本情况(base case)并返回最终结果。在本实验中,我们将学习如何使用递归来计算给定数字的各位数字之和。
注意:你需要自己创建文件
~/project/main.c来练习编码,并学习如何使用 gcc 编译和运行它。
cd ~/project
## 创建 main.c
touch main.c
## 编译 main.c
gcc main.c -o main
## 运行 main
./main
获取用户输入
第一步是获取用户输入,这将是我们需要计算各位数字之和的数字。为此,我们将使用 scanf 函数从标准输入流(stdin)中读取用户输入。
#include<stdio.h>
int main()
{
int num;
printf("请输入一个数字:");
scanf("%d", &num);
/* 添加代码 */
return 0;
}
定义递归函数
接下来,我们将编写一个递归函数来计算给定数字的各位数字之和。该函数将接收一个整数作为参数,并返回一个整数作为数字之和。函数将执行以下步骤:
- 如果数字小于 10,函数将返回数字本身作为数字之和。
- 如果数字大于或等于 10,函数将计算最后一位数字的和,并以剩余数字作为参数调用自身。
int sumOfDigits(int num)
{
if(num < 10)
{
return num;
}
else
{
return num%10 + sumOfDigits(num/10);
}
}
调用递归函数
现在,我们将使用第一步中获取的用户输入调用上一步定义的递归函数。该函数将返回数字的各位数字之和作为一个整数。
#include<stdio.h>
int sumOfDigits(int num);
int main()
{
int num, sum;
printf("请输入一个数字:");
scanf("%d", &num);
sum = sumOfDigits(num);
/* 添加代码 */
return 0;
}
int sumOfDigits(int num)
{
if(num < 10)
{
return num;
}
else
{
return num%10 + sumOfDigits(num/10);
}
}
显示结果
最后一步是显示第一步中获取的数字的各位数字之和。我们将使用 printf 函数将结果输出到标准输出流(stdout)。
#include<stdio.h>
int sumOfDigits(int num);
int main()
{
int num, sum;
printf("请输入一个数字:");
scanf("%d", &num);
sum = sumOfDigits(num);
printf("%d 的各位数字之和是:%d", num, sum);
return 0;
}
int sumOfDigits(int num)
{
if(num < 10)
{
return num;
}
else
{
return num%10 + sumOfDigits(num/10);
}
}
总结
在本实验中,我们学习了如何使用递归计算给定数字的各位数字之和。我们首先获取了用户输入,并定义了一个递归函数来计算数字之和。接着,我们调用了该函数并将结果显示给用户。



