新动态:c语言怎么计算n的阶乘

时间:2023-01-04 15:17:16       来源:PHP中文网

本教程操作环境: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循环

#includeint 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循环

#includeint 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 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 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中文网其它相关文章!

关键词: 递归函数 相关文章