使用递归计算阶乘

CCBeginner
立即练习

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

介绍

在本实验中,我们将学习如何使用 C 编程语言中的递归(recursion)来计算给定数字的阶乘(factorial)。阶乘用符号 ! 表示,它是所有小于或等于给定数字的正整数的乘积。例如,5 的阶乘是 5 x 4 x 3 x 2 x 1 = 120。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL c(("`C`")) -.-> c/BasicsGroup(["`Basics`"]) c(("`C`")) -.-> c/FunctionsGroup(["`Functions`"]) c(("`C`")) -.-> c/FileHandlingGroup(["`File Handling`"]) 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/FileHandlingGroup -.-> c/create_files("`Create Files`") c/UserInteractionGroup -.-> c/user_input("`User Input`") c/UserInteractionGroup -.-> c/output("`Output`") subgraph Lab Skills c/variables -.-> lab-123242{{"`使用递归计算阶乘`"}} c/function_declaration -.-> lab-123242{{"`使用递归计算阶乘`"}} c/function_parameters -.-> lab-123242{{"`使用递归计算阶乘`"}} c/recursion -.-> lab-123242{{"`使用递归计算阶乘`"}} c/create_files -.-> lab-123242{{"`使用递归计算阶乘`"}} c/user_input -.-> lab-123242{{"`使用递归计算阶乘`"}} c/output -.-> lab-123242{{"`使用递归计算阶乘`"}} end

初始化 main() 函数

main 函数中,我们将声明变量来存储输入的值和计算得到的阶乘。然后,我们会提示用户输入一个值,以便计算其阶乘。

#include <stdio.h>

int main()
{
    int num, factorial;
    printf("Enter a number: ");
    scanf("%d", &num);
}

创建使用递归计算阶乘的函数

现在我们将创建一个名为 factorial 的函数,它接受一个整数参数 num 并返回一个整数值。在这个函数中,我们将使用递归来计算给定数字的阶乘。如果给定数字的值等于 1 或 0,我们将返回 1,因为这两个值的阶乘都是 1。如果给定数字大于 1,我们将使用递归计算其阶乘并返回该值。

int factorial(int num)
{
    if(num == 0 || num == 1)
    {
        return 1;
    }
    else
    {
        return num * factorial(num-1);
    }
}

在 main 函数中调用阶乘函数并打印结果

现在,我们将在 main 函数中调用 factorial 函数,并将输入的值作为参数传递。然后,我们将返回值存储在 factorial 变量中,并将结果打印到控制台。

#include <stdio.h>

int factorial(int num);

int main()
{
    int num, factorial;
    printf("Enter a number: ");
    scanf("%d", &num);

    factorial = fact(num);
    printf("Factorial of %d is %d", num, factorial);

    return 0;
}

编译并运行程序

现在程序已经编写完成,将文件保存为 main.c 并存储在 ~/project/ 目录中。打开终端并导航到包含 main.c 文件的目录。使用以下命令编译程序:

gcc main.c -o main

程序成功编译后,使用以下命令运行程序:

./main

main.c 的完整代码

如有需要,可以参考以下代码。

#include <stdio.h>

int factorial(int num);

int main()
{
    int num, factorial;
    printf("Enter a number: ");
    scanf("%d", &num);

    factorial = factorial(num);
    printf("Factorial of %d is %d", num, factorial);

    return 0;
}

int factorial(int num)
{
    if(num == 0 || num == 1)
    {
        return 1;
    }
    else
    {
        return num * factorial(num-1);
    }
}

总结

在本实验中,我们学习了如何使用 C 语言中的递归来计算给定数字的阶乘。我们创建了一个使用递归来查找阶乘的函数,以及一个用于输入数字并调用阶乘函数的 main 函数。

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