c语言阶乘代码

以下是一个用C语言编写的计算阶乘的代码:

#include <stdio.h>

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

int main() {
    int num;
    printf("请输入一个非负整数:");
    scanf("%d", &num);
    
    if (num < 0) {
        printf("输入错误!请输入一个非负整数。\n");
        return 0;
    }
    
    int result = factorial(num);
    printf("%d的阶乘是:%d\n", num, result);
    
    return 0;
}

这段代码中,factorial函数用递归的方式计算阶乘。在main函数中,首先要求用户输入一个非负整数,然后调用factorial函数计算阶乘,并将结果打印出来。如果用户输入的是负数,则会提示输入错误。

当用户输入一个非负整数时,程序会调用factorial函数来计算阶乘。factorial函数使用递归的方式来计算阶乘,即将问题分解为更小的子问题。当输入的数为0时,递归终止,返回1。否则,递归调用factorial函数来计算n-1的阶乘,并将结果与n相乘,得到n的阶乘。

main函数中,首先要求用户输入一个非负整数,并将其存储在变量num中。然后,通过调用factorial函数来计算num的阶乘,并将结果存储在变量result中。最后,使用printf函数将numresult打印出来。

如果用户输入的是负数,则会输出错误提示信息,并结束程序的执行。

这段代码可以计算较小的阶乘,但对于较大的阶乘可能会导致栈溢出或计算时间过长。在实际应用中,可以考虑使用循环或其他优化方法来计算阶乘。