使用递归求一个数的阶乘的 C 程序

要理解此示例,您应该具备以下 C 语言编程主题的知识:

正数 n 的阶乘的计算方法如下:

n! = 1 * 2 * 3 * 4 * ...  * n

负数的阶乘不存在。 0 的阶乘是 1

在此示例中,您将学习使用递归查找数字的阶乘。访问此页面以了解如何使用循环计算数字的阶乘

使用递归的数字的阶乘

#include<stdio.h>
long int multiplyNumbers(int n);
int main() {
    int n;
    printf("Enter a positive integer: ");
    scanf("%d",&n);
    printf("Factorial of %d = %ld", n, multiplyNumbers(n));
    return 0;
}

long int multiplyNumbers(int n) {
    if (n>=1)
        return n*multiplyNumbers(n-1);
    else
        return 1;
}

输出

Enter a positive integer: 6
Factorial of 6 = 720

假设用户输入了 6

最初,从 main() 中, 6 作为参数传递给 multiplyNumbers() 调用。

然后, multiplyNumbers() 从同一个函数(递归调用)传递 5 。在每次递归调用中,参数的值 n 减少了 1。

当值为 n 小于 1,没有递归调用,阶乘最终返回给 main() 函数。