C语言入门——求n的阶乘
关于求n的阶乘问题,我们先来看一个题,借助题来找到突破点。
Problem Description
给定一个整数n,求它的阶乘,0≤n≤12
Input
输入一个数n
Output
输出一个数,表示n的阶乘
Sample Input
5
Sample Output
120
既然是求阶乘的,那突破点就很明显,
突破点就在:阶乘
阶乘的概念及背景:
概念:
一个正整数的阶乘(factorial)是所有小于及等于该数的正整数的积,并且0的阶乘为1。自然数n的阶乘写作n!。
背景:
1808年,基斯顿·卡曼(Christian Kramp,1760~1826)引进这个表示法。
阶乘的计算方法:
大于等于1
任何大于等于1 的自然数n 阶乘表示方法:
n!=1×2×3×…×(n-1)×n
或
n!=n×(n-1)!
0的阶乘
0!=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; }
②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; }
第二种:递归(函数调用自身)
#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; }
当然也可以写成这样:
#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; }
关于求n的阶乘就先说到这里,希望这篇文章能对你有所帮助!
作者:code_流苏
喜欢的话,点个赞吧!
欢迎评论交流,如有错误,还请指正!