C语言,关于学习求阶乘的方法以及心得

一.概念:
一个正整数的阶乘是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。

二.求阶乘的方法:

阶乘的计算方法:

任何大于等于1 的自然数n 阶乘表示方法:

n!=1×2×3×…×(n-1)×n 或 n!=n×(n-1)!

注意:0的阶乘为1,即 0!=1。
1! = 1
2! = 2 * 1 = 2
3! = 3 * 2 * 1 = 6

n! = n * (n-1) *… * 2 * 1
————————————————

1.第一种:循环
①for循环。

#include<stdio.h>

int main()
{
    int n;
    scanf("%d", &n);
    int fact = 1;
    int i;
    for (i = 1; i <= n; i++)
    {
        fact *= i;
    }
    printf("%d\n", fact);
    return 0;
}

②while循环

#include<stdio.h>

int main()
{
    int n;
    scanf("%d", &n);
    int fact = 1;
    int i = 1;
    while (i <= n)
    {
        fact *= i;
        i++;
    }
    printf("%d\n", fact);
    return 0;
}

当然 这样也可以:

#include <stdio.h>

int Fact(int n);
int main() //主函数
{
    int n, cnt;
    scanf("%d", &n);
    cnt = Fact(n);
    printf("%d\n", cnt);
    return 0;
}
int Fact(int n)    //递归函数 
{
    int res = n;
    if (n > 1)
        res = res * Fact(n - 1);
    return res;
}

三、进阶
为打破上述0<=n<=12限制,特补充进阶内容
第一种:初步进阶版,可以求解 0<=n<=20范围内的阶乘(以for循环实现为例)
改进思路:将原有的int类型改为long long类型,最高可以求解到n为20时候的阶乘值。

除此之外,还有更多的进阶的方法,如有兴趣 请移步到此链接:C语言入门与进阶——求n的阶乘_c语言求n的阶乘-CSDN博客

学习了阶乘之后,我不仅对c语言更加有兴趣,而且发现同一种效果有很多种方法,没有最好的,只有更好的方法。因此我们要多动脑思考,在自己的代码上更加优化,精益求精。

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值