c语言怎么计算n的阶乘
时间:2023-01-04 15:19
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。 在了解这些之后,可以开始先尝试用代码进行实现一下,然后再看下面代码做一次检查。 关于C语言实现n的阶乘,目前入门阶段,我们主要有以下两种写法: ①for循环 测试样例:5 1 * 2 * 3 * 4 * 5 = 120 ②while循环 测试样例:6 1 * 2 * 3 * 4 * 5 * 6 = 720 测试样例:7 7 * 6 * 5 * 4 * 3 * 2 * 1 当然也可以写成这样: 测试样例:6 6 * 5 * 4 * 3 * 2 * 1 【相关推荐:C语言视频教程】 以上就是c语言怎么计算n的阶乘的详细内容,更多请关注gxlsystem.com其它相关文章!一、问题
二、分析
1! = 1
2! = 2 * 1 = 2
3! = 3 * 2 * 1 = 6
…
n! = n * (n-1) *… * 2 * 1三、求解
第一种:循环
#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;}
5120--------------------------------Process exited after 1.475 seconds with return value 0请按任意键继续. . .
#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;}
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;}
= 1 * 2 * 3 * 4 * 5 * 6 * 7
= 504075040--------------------------------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;}
= 1 * 2 * 3 * 4 * 5 * 6
= 7206720--------------------------------Process exited after 1.829 seconds with return value 0请按任意键继续. . .