使用递归计算数字之和

CCBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

递归(Recursion)是一种编程技术,其中函数调用自身,使得函数能够重复执行,直到满足基本情况(base case)并返回最终结果。在本实验中,我们将学习如何使用递归来计算给定数字的各位数字之和。

注意:你需要自己创建文件 ~/project/main.c 来练习编码,并学习如何使用 gcc 编译和运行它。

cd ~/project
## 创建 main.c
touch main.c
## 编译 main.c
gcc main.c -o main
## 运行 main
./main

Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("`C`")) -.-> c/BasicsGroup(["`Basics`"]) c(("`C`")) -.-> c/FunctionsGroup(["`Functions`"]) c(("`C`")) -.-> c/UserInteractionGroup(["`User Interaction`"]) c/BasicsGroup -.-> c/variables("`Variables`") c/FunctionsGroup -.-> c/function_declaration("`Function Declaration`") c/FunctionsGroup -.-> c/function_parameters("`Function Parameters`") c/FunctionsGroup -.-> c/recursion("`Recursion`") c/UserInteractionGroup -.-> c/user_input("`User Input`") c/UserInteractionGroup -.-> c/output("`Output`") subgraph Lab Skills c/variables -.-> lab-123340{{"`使用递归计算数字之和`"}} c/function_declaration -.-> lab-123340{{"`使用递归计算数字之和`"}} c/function_parameters -.-> lab-123340{{"`使用递归计算数字之和`"}} c/recursion -.-> lab-123340{{"`使用递归计算数字之和`"}} c/user_input -.-> lab-123340{{"`使用递归计算数字之和`"}} c/output -.-> lab-123340{{"`使用递归计算数字之和`"}} end

获取用户输入

第一步是获取用户输入,这将是我们需要计算各位数字之和的数字。为此,我们将使用 scanf 函数从标准输入流(stdin)中读取用户输入。

#include<stdio.h>

int main()
{
    int num;
    printf("请输入一个数字: ");
    scanf("%d", &num);

    /* 添加代码 */

    return 0;
}

定义递归函数

接下来,我们将编写一个递归函数来计算给定数字的各位数字之和。该函数将接收一个整数作为参数,并返回一个整数作为数字之和。函数将执行以下步骤:

  1. 如果数字小于 10,函数将返回数字本身作为数字之和。
  2. 如果数字大于或等于 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);
    }
}

总结

在本实验中,我们学习了如何使用递归计算给定数字的各位数字之和。我们首先获取了用户输入,并定义了一个递归函数来计算数字之和。接着,我们调用了该函数并将结果显示给用户。

您可能感兴趣的其他 C 教程