📜  C程序使用递归查找数字的阶乘

📅  最后修改于: 2020-10-04 11:24:26             🧑  作者: Mango

在此示例中,您将学习查找用户使用递归输入的非负整数的阶乘。

正数n的阶乘由下式给出:

factorial of n (n!) = 1 * 2 * 3 * 4 *...  * n

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

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


使用递归的阶乘
#include
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。

最初, multiplyNumbers()是从被称为main() 6作为参数传递。

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

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