用递归的方法求 n 的阶乘

454 阅读1分钟

刚刚学习了C语言的函数,发现一道挺有意思的题目,编了个小代码。

代码

#include<stdio.h>

int fact(int n);

int main()
{
    int n, r;
    printf("请输入要求阶乘的数:");
    scanf("%d", &n);
    if (n < 0)
        printf("\nerror");//n不能为负数
    else
    {
        r = fact(n);//引用函数fact
        printf("%d的阶乘是%d", n,r);
    }
    return 0;
}

int fact(int n)//递归
{
    int f;
    if (n == 0 || n == 1)//0和1的阶乘为1
        f = 1;
    else
        f = fact(n - 1) * n;//一直循环相乘直到n为1
    return f;//返回值返回到r
}

结果

image.png