C语言入门——求n的阶乘

C语言入门——求n的阶乘C语言入门——求n的阶乘关于求n的阶乘问题,我们先来看一个题,借助题来找到突破点。ProblemDescription给定一个整数n,求它的阶乘,0≤n≤12Input输入一个数nOutput输出一个数,表示n的阶乘SampleInput5SampleOutput120既然是求阶乘的,那突破点就很明显,突破点就在:阶乘阶乘的概念及背景:概念:一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。背景:180

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

5
120

--------------------------------
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

6
720

--------------------------------
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

7
5040

--------------------------------
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

6
720

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

关于求n的阶乘就先说到这里希望这篇文章能对你有所帮助!

作者:code_流苏

喜欢的话,点个赞吧!

欢迎评论交流,如有错误,还请指正!

今天的文章C语言入门——求n的阶乘分享到此就结束了,感谢您的阅读,如果确实帮到您,您可以动动手指转发给其他人。

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

(0)
编程小号编程小号

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注