• 技术文章 >后端开发 >C#.Net教程

    c语言怎么计算n的阶乘

    藏色散人藏色散人2023-01-04 15:19:32原创293

    c语言计算n的阶乘的方法:1、通过for循环计算阶乘,代码如“for (i = 1; i <= n; i++){fact *= i;}”;2、通过while循环计算阶乘,代码如“while (i <= fact="" int="" res="n;if" n=""> 1)res...”。

    本教程操作环境:windows7系统、c99版本、Dell G3电脑。

    c语言怎么计算n的阶乘?

    C语言求n的阶乘:

    关于求n的阶乘问题,我们先来看一个题,借助题来找到突破点。

    一、问题

    Problem Description

    给定一个整数n,求它的阶乘,0≤n≤12

    Input

    输入一个数n

    Output

    输出一个数,表示n的阶乘

    Sample Input

    5

    Sample Output

    120

    二、分析

    既然是求阶乘的,那突破点就很明显,

    突破点就在阶乘

    阶乘的概念及背景

    1️⃣概念:

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

    2️⃣背景:

    1808年,基斯顿·卡曼(Christian Kramp,1760~1826)引进这个表示法。

    3️⃣阶乘的计算方法:

    任何大于等于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

    在了解这些之后,可以开始先尝试用代码进行实现一下,然后再看下面代码做一次检查。

    三、求解

    关于C语言实现n的阶乘,目前入门阶段,我们主要有以下两种写法:

    第一种:循环

    ①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;}

    测试样例:5

    1 * 2 * 3 * 4 * 5 = 120

    5120--------------------------------Process exited after 1.475 seconds with return value 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;}

    测试样例:6

    1 * 2 * 3 * 4 * 5 * 6 = 720

    6720--------------------------------Process exited after 1.549 seconds with return value 0请按任意键继续. . .
    第二种:递归(函数调用自身)

    1️⃣写法一

    #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;}

    测试样例:7

    7 * 6 * 5 * 4 * 3 * 2 * 1
    = 1 * 2 * 3 * 4 * 5 * 6 * 7
    = 5040

    75040--------------------------------Process exited after 2.563 seconds with return value 0请按任意键继续. . .

    当然也可以写成这样:

    2️⃣写法二

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

    测试样例:6

    6 * 5 * 4 * 3 * 2 * 1
    = 1 * 2 * 3 * 4 * 5 * 6
    = 720

    6720--------------------------------Process exited after 1.829 seconds with return value 0请按任意键继续. . .

    【相关推荐:C语言视频教程

    以上就是c语言怎么计算n的阶乘的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:阶乘 C语言
    上一篇:c语言的换行符号是什么 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • c语言中*p和p的区别是什么• (超详细)VScode中配置C语言环境的方法• c语言中goto语句的含义是什么• c语言如何进行强制类型转换• c语言的换行符号是什么
    1/1

    PHP中文网