c语言中gamma函数 c++ gamma函数

C语言中阶乘用什么符号表示啊?/*This program can calculate the factorial of (int n).*/
#include stdio.h
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;
}
扩展资料c语言中gamma函数:
阶乘是定义在自然数范围里的(大多科学计算器只能计算 0~69 的阶乘),小数科学计算器没有阶乘功能 , 如 0.5!,0.65?。?.777!都是错误的 。但是,有时候c语言中gamma函数我们会将Gamma 函数定义为非整数的阶乘,因为当 x 是正整数 n 的时候,Gamma 函数的值是 n-1 的阶乘 。
参考资料来源:百度百科-阶乘
伽玛函数伽玛函数的定义(或叫第二类欧拉积分):
Γ(x)=积分:e^(-t)*t^(x-1)dt (e的负t次方乘以t的(x-1)次方),积分区间是0到正无穷,x>0
而可以把x延拓到复平面上,除了0和负整数的点.这里,利用Γ函数在x>0的区间上的性质Γ(x 1)=xΓ(x) ,可以定义:
Γ(z)=Γ(z n 1)/z(z 1)(z 2)...(z n)
在正整数的范围内,由于Γ(x 1)=xΓ(x) 关系,Γ(n 1)=n!
这样,因为z可以取非整数,我们就用伽玛函数延拓了阶乘的定义.定义x?。溅?x 1) , 这里x可以取非整数.
C语言,求n阶乘的代码?思路:所谓n的阶乘就是从1到n的累积,所以可以通过一个for循环,从1到n依次求积即可 。
参考代码:
#include "stdio.h"
int main() {
int n,i,s=1;
scanf("%d",n);
for(i=1;i=n;i)//for循环求累积
s=s*i;
printf("%d\n",s);
return 0;
}
/*
运行结果:(例如求5的阶乘)
5
120
*/
从桌面打开下载好的编程软件 , 下图为visual C的打开界面 。
打开编程软件后,新建一个任务,点击文件,选择Csource file, 放在自己喜欢的文件夹下面 。
输入这段代码,记得代码编译前,先要定义变量 。# include stdio.hvoid main (){int n ,f =1 ;printf ("input n :");scanf("%d\n",n);for (;n0;n--)f=f*n;printf("n!=%d\n",f);}
点击如图的两个按钮,左边是complie是编译的意思 , 右边build 是连接的意思 。
检查完,没有显示error的情况下,最后点击BuildExecute 运行软件 。
最后一步运行软件后,Debug里面有个exe的可运行程序,就是N的阶乘程序了 。
参考资料
百度经验.百度[引用时间2018-5-7]
如何用C语言用伽马函数求值简单的说就是整数阶乘的推广 , 它有一个积分的表达式:
Γ(x)=∫e^(-t)*t^(x-1)dt (积分的下限式0,上限式 ∞)
算法源自《常用算法程序集》徐士良
#include "stdio.h"
double gam1(x)
double x;
{ int i;
double y,t,s,u;
static double a[11]={ 0.0000677106,-0.0003442342,
0.0015397681,-0.0024467480,0.0109736958,
-0.0002109075,0.0742379071,0.0815782188,
0.4118402518,0.4227843370,1.0};
if (x=0.0)
{ printf("err**x=0!\n"); return(-1.0);}
y=x;
if (y=1.0)
{ t=1.0/(y*(y 1.0)); y=y 2.0;}
else if (y=2.0)
{ t=1.0/y; y=y 1.0;}
else if (y=3.0) t=1.0;
else
{ t=1.0;
while (y3.0)
{ y=y-1.0; t=t*y;}
}
s=a[0]; u=y-2.0;
for (i=1; i=10; i)
s=s*u a[i];
s=s*t;
return(s);
}
任意输入一个数,求其阶乘并输出用科学计算器就可以 , 比如12 [n!] 即显示479001600 。
#includestdio.h
int main()
{
int i,n;
double temp;
while(1)
{
scanf("%d",n);
temp =1;
if(n0){printf("error");return 0;}
if(n==0||n==1);
else{
for(i=1;i=n;i)
temp*=i;
}
printf("%.f\n",temp);
}
}
扩展资料:
通常我们所说的阶乘是定义在自然数范围里的(大多科学计算器只能计算 0~69 的阶乘),小数科学计算器没有阶乘功能,如 0.5?。?0.65?。?.777!都是错误的 。但是,有时候会将Gamma 函数定义为非整数的阶乘,因为当 x 是正整数 n 的时候,Gamma 函数的值是 n-1 的阶乘 。
参考资料来源:百度百科-n!
C语言求1?。??。?! …n! , 其中n由键盘输入 。n的值不能超过13 , 否则会因为数据溢出而导致结果错误 。
#include stdio.h
int main()
{
long i,n,m,sum=0
scanf("%d",n);
for(i=m=1;i=n;i);
{
m*=i;
sum =m;
}
printf("%d\n" , sum);
return 0;
}
例如:
#include stdio.h
/* 通过递归计算一个数的回阶乘 */
int factorial(int num)
{
if (num==1)
return 1;
else
return (num * factorial(num - 1));
}
int main()
{
int i,n;
long sum = 1;
scanf("%d",n);
for (i = 2;i = n;i)
sum= factorial(i);
printf("%ld\n",sum);
return 0;
}
扩展资料:
由于正整数的阶乘是一种连乘运算,而0与任何实数相乘的结果都是0 。所以用正整数阶乘的定义是无法推广或推导出0!=1的 。即在连乘意义下无法解释“0!=1” 。
通常我们所说的阶乘是定义在自然数范围里的(大多科学计算器只能计算 0~69 的阶乘),小数科学计算器没有阶乘功能,如 0.5! , 0.65!,0.777!都是错误的 。但是,有时候会将Gamma 函数定义为非整数的阶乘,因为当 x 是正整数 n 的时候,Gamma 函数的值是 n-1 的阶乘 。
参考资料来源:百度百科-阶乘
【c语言中gamma函数 c gamma函数】c语言中gamma函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于cgamma函数、c语言中gamma函数的信息别忘了在本站进行查找喔 。

    推荐阅读