法/步骤
第一步、编程的第一步就是写头文件,对于初学者来说,只写一个头文件就可以了,即#include<stdioh>
第二步、就是定义我们的变量,我们需要定义一个n,用来求他的阶乘,sum用来保存结果,i用来循环
第三步、就是把sum初始化,为1千万不要为0,保证后面的结果不出问题。
第四步、就是输入一个n,用来求n的阶乘,别忘了在前面提示一下。
第五步、就是利用for循环来求阶乘。
第六步、就是调用printf(:);函数来输出阶乘结果。
定义
n!=1×2×3xn
n!=X×(X-1)×(X-2)×1
1751年,欧拉以大写字母M表示m阶乘 M=1x2x3xm
1799年,鲁非尼在他出版的方程论著述中,则以小写字母π表示m阶乘。而在1813年,高斯则以Π(n)来表示n阶乘。而用来表示n阶乘的方法起源于英国,但仍未能确定始创人是谁。直至1827年,由于雅莱特的建议而得到流行,现在有时也会以这个符号作为阶乘符号。
当n较大时,直接计算n!变得不可能,这时可通过斯特灵(Stirling)公式计算近似算或取得大小范围。
#include <stdioh>
// 声明递归函数 factorial,用于计算 n 的阶乘
int factorial(int n);
int main() {
int n;
printf("请输入一个非负整数 n: ");
scanf("%d", &n);
if (n < 0) {
printf("输入错误!\n");
return -1;
}
printf("%d 的阶乘为 %d\n", n, factorial(n));
return 0;
}
// 定义递归函数 factorial,用于计算 n 的阶乘
int factorial(int n) {
if (n == 0 || n == 1) { // 边界条件
return 1;
} else {
return n factorial(n-1); // 递归调用
}
}
#include <stdioh>
#define MAX 20
int main(void)
{
int i,n;
int repeat, ri;
double sum[MAX] = {0};
double fact(int n);
scanf("%d", &repeat);
for(ri = 1; ri <= repeat; ri++){
scanf("%d", &n);
for(i=0; i<=n; i++)
sum[ri - 1] += fact(i);
// printf("sum = %0f\n", sum);
}
for(i=0; i<repeat; i++) {
printf("sum = %0f\n", sum[i]);
}
return 0;
}
double fact(int n) {
if(n == 0)
return 1;
return n fact(n - 1);
}
f是fac()函数内部的静态变量,那么,f只在第一次进入fac()函数时才执行其初始化 *** 作,以后都会跳过初始化 *** 作。所以第一次执行fac(1)函数时,f初始化为1,并乘以1,f仍为1;第二次执行fac(2)时,跳过初始化 *** 作,f=f2,f为2;第三次执行fac(3)时,跳过初始化 *** 作,f=f3,f为6;第四次执行fac(4)时,跳过初始化 *** 作,f=f4,f为24;以此类推。
/This program can calculate the factorial of (int n)/
#include <stdioh>
int factorial(int n)
{
return (n == 1)n:factorial(n-1)n;//recursion
}
int main(void)
{
int n,fac;
printf("Please input the value of n:");//initialize n
scanf("%d",&n);
fac = factorial(n)//variable fac is not necessary
printf("The result is:%d\n",fac);
return 0;
}
扩展资料:
阶乘是定义在自然数范围里的(大多科学计算器只能计算 0~69 的阶乘),小数科学计算器没有阶乘功能,如 05!,065!,0777!都是错误的。但是,有时候我们会将Gamma 函数定义为非整数的阶乘,因为当 x 是正整数 n 的时候,Gamma 函数的值是 n-1 的阶乘。
-阶乘
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)