C语言 计算n的阶乘(函数 递归)

这篇博客介绍了计算阶乘的三种C语言实现方式:一是通过循环直接计算,二是创建函数实现,三是利用递归思想。每种方法都详细展示了代码实现,并解释了其工作原理。递归方法中,当输入值小于等于1时返回1,否则返回n乘以jie(n-1),直到递归到n小于等于1为止。
摘要由CSDN通过智能技术生成

第一种:用循环直接算

#include <stdio.h>
int main()
{
    int n,i,a=1;
    scanf("%d",&n);
    for (i = 1; i <=n; i++)
    {
        a= sum*a;
    }
    printf("%d\n", a);
}


第二种:创建函数来实现,函数里的计算方法实际还是循环

#include<stdio.h>
int jie(int n)            //创建一个jie函数用来求n!
{
    int i, b=1;
    for (i = 1; i <= n; i++)
    {
        b *= i;
    }
    return b;
}
int main()
{
    int n = 0;
    scanf("%d", &n);
    int a = jie(n);
    printf("%d\n", a);
}

第三种:用递归的思想来解决;

当输入值n<=1时   函数里返回1;

当输入值n>1时  函数返回n*jie(n-1)  实际上返回的就是n*(n-1)!,只不过这里的(n-1)!用我们所创建的函数jie(n-1)!来表示;如果此时n-1>1表达式还成立,那就继续执行我们的jie函数。      jie(n-1)=(n-1)*jie(n-1-1);

1.  如果n-1-1>1不成立,此时会将1返还给jie(n-1-1)函数,        现在b=n*jie(n-1)=n*(n-1)*jie(n-1-1)  注意(jie(n-1-1)=1),所以b=n*(n-1);

2. 如果n-1-1>1成立,那就继续执行,继续判断,一直到小于等于1;最后返回的b=n*(n-1)*(n-2).......

#include<stdio.h>
int jie(int n)
{
    int  b = 1;
    if (n > 1)
    {
        b = n*jie(n - 1);
    }
    return b;
    if (n <= 1)
    {
        return 1;
    }
}
int main()
{
    int n = 0;
    scanf("%d", &n);
    int a = jie(n);
    printf("%d\n", a);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值