c语言中阶乘怎么表示(c语言实现n的阶乘三种方法 )


数的阶乘,想必大家都不陌生,原理也很清楚,就是给定一个正整数,然后求出所有小于以及等于该正整数的积。

这里我们要清楚几点:

1、负数没有阶乘,所以默认是正整数。

2、0的阶乘是1,这是人为规定的,只需要记住即可。

那么,今天我们的重点是用C语言实现数的阶乘,不过我提出了一个要求:利用我们前些天所学的知识,用函数以及递归函数的方法来实现数的阶乘。

这样的话,既能帮助我们复习函数和递归函数的方法,也能巩固我们的C语言基础。

在正式用C语言实现数的阶乘前,我们先来理一理逻辑。

数的阶乘,除了0的阶乘是1外,正整数的阶乘就是所有小于以及等于它的积。

给定一个数为5,那么5的阶乘就是5!=1x2x3x4x5 = 120。

这里我们需要用到一个循环,就是不停地遍历比5小的数即可。

遍历出1、2、3、4、5之后,再不停地进行相乘。

初始值为1,那么第一次相乘为1,第二次就是1与2相乘,直到第五次就是前四次相乘的积与5相乘,最终得到120。

首先是给出流程图,方便大家理解。

用C语言实现数的阶乘,是一个数学中常见的运算符号

用三种方法进行代码实现

第一种:普通的直接在主函数中写出所有代码。

用该方法就比较直观了,就是遍历给定数,从1开始到它本身,然后不停相乘,注意,我在这里一开始用了给定数来相乘,但其实这是有问题的,还是得从1开始,毕竟1的阶乘是从1开始的。

#include<stdio.h>
int main()
{
    int number;
    int factorial = 1;//因为factorial是阶乘的英文
    scanf("%d", &number);
    for(int i=1; i<=number; i++) {
        factorial = i*factorial;//这样是确保即便当number=0的时候,结果也为1
    }
     printf("%d ", factorial);
}

测试结果:

用C语言实现数的阶乘,是一个数学中常见的运算符号

第二种:在主函数外写一个子函数,然后在主函数内直接进行调用该子函数。

#include<stdio.h>
void factorial(){
    int number;
    int factorial = 1;//因为factorial是阶乘的英文
    scanf("%d", &number);
    for(int i=1; i<=number; i++) {
        factorial = i*factorial;//这样是确保即便当number=0的时候,结果也为1
    }
    printf("%d ", factorial);
}
int main()
{
    factorial();//可以说,就是直接把主要代码这部分给拎出来,然后在主函数调用
}

其实可以发现,这与我们上面的直接在主函数里写的方法没什么差别,唯一的区别就是看起来更加直观一些,以及代码错落有致一点。

测试结果:

用C语言实现数的阶乘,是一个数学中常见的运算符号

第三种:在主函数外写一个递归函数,也就是让子函数不停调用它自身。

与前两个方法相比,递归函数显然更好理解一些,也显然让代码的利用率更高了,因为0的阶乘是0,所以这应该单独进行判断,也就是得到结果为1,之后就是让它本身与比它小的数相乘了。

其实这个逻辑很好理解,给定数5,然后5去与factorial(4)相乘,同时factorial(4)又是4与factorial(3)相乘,与此推理下去,直到最小是与1相乘即可,那就满足了从1开始到它本身的所有数相乘。

#include<stdio.h>
int factorial(int n){
    if(n<=0){
        return 1;
    }
    return n*factorial(n-1);//与比它小的正整数相乘
}
int main()
{
    int number = 0;
    scanf("%d", &number);
    printf("%dn",factorial(number));
    //与之前相比,显然变得更简单了些
}

测试结果:

用C语言实现数的阶乘,是一个数学中常见的运算符号

总结

总的来说,阶乘其实蛮简单的,就是大家的思维要再打开一些,不要局限于只用一种方法来实现,多利用之前学过的一些方法,代码的利用率还能变高,也能提升自己的编程能力。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论