三九宝宝网宝宝教育教学论文

c语言求阶乘的函数

01月06日 编辑 39baobao.com

[4利用函数的嵌套调用实现三个整数的求和]#include<stdio.h> void math(int x, int y, int z) { printf("三个整数的和为: %d\n", x+y+z); } int main() { int x,y,z; scanf("%d %d %d",&x,&y,&z); math(x,y,z); getchar();...+阅读

阶乘:

阶乘是基斯顿·卡曼(Christian Kramp,1760~1826)于 1808 年发明的运算符号,是数学术语。

一个正整数的阶乘(英语:factorial)是所有小于及等于该数的正整数的积,并且有0的阶乘为1。自然数n的阶乘写作n!。1808年,基斯顿·卡曼引进这个表示法。

亦即n!=1*2*3*...*n。阶乘亦可以递归方式定义:0!=1,n!=(n-1)!*n。

C语言

在 C 语言中,使用循环语句可以很方便的求出阶乘的值,下面介绍一个很简单的阶乘例子。(因为网上多数是比较麻烦的方法)

【计算出“ 1!+ 2!+ 3!+ …… + 10!”的值是多少?】

#include

int main()

{

int x;

long j=1,sum=0;

for(x=1;x<=10;x++)

{

j*=x;

sum+=j;

}

printf("1!+2!+...+10!=%ld\n",sum);

return 0;

}

/*结果:4037913*/

Pascal中program test;

varn:longint;

function jc(n:longint):qword;

begin if n=0 then jc:=1 else jc:=n*jc(n-1)end;

begin readln (n); writeln (jc(n))end.

C++ 中

#include

using namespace std;

long long f(int n)

{

long long e=1;

if(n>0)

e=n*f(n-1);

cout<

return e;

}

int main()

{

int m=20;

f(m);

return 0;

}

以上使用 C++ 11 标准

也可以利用积分求浮点数阶乘:

#include

#include

double s;

const double e=exp(1.0);

double F(double t)

{

return pow(t,s)*pow(e,-t);

}

double simpson(double a,double b)

{

double c=a+(b-a)/2;

return (F(a)+4*F(c)+F(b))*(b-a)/6;

}

double asr(double a,double b,double eps,double A)

{

double c=a+(b-a)/2;

double L=simpson(a,c),R=simpson(c,b);

if(fabs(L+R-A)<=15*eps) return L+R+(L+R-A)/15.0;

return asr(a,c,eps/2,L)+asr(c,b,eps/2,R);

}

double asr(double a,double b,double eps)

{

return asr(a,b,eps,simpson(a,b));

}

int main()

{

scanf("%lf",&s);

printf("%lf\n",asr(0,1e2,1e-10));

return 0;

}

以下为关联文档:

C语言编写一个嵌套函数计算组合数#include<stdio.h> int c(int n,int m){ int i,s=1; for(i=m;i>=m-n+1;i--)s*=i; for(i=n;i>=2;i--)s/=i; return s;} int f(int k,int m,int n){ int i,s=0; for(i=k;i<=k+...

C语言函数嵌套#include <stdio.h> void b() { printf("Hello World!\n"); } void a() { b(); } void main () { a(); } 这样就OK了,只要遵循一个原则,函数在被调用前必须是已经声明过的。因为...

C语言编写days函数计算该日是该年的第几天怎么做#include<stdio.h> int days(int y,int m,int d) {int i,a[13]={0,31,28,31,30,31,30,31,31,30,31,30,31}; if(y<1||m<1||d<1||d>a[m]+(y%4==0&y%100>0||y%400==0)) {printf...

C语言编写days函数计算该日是该年的第几天/*临时写的*/ #include int days(int year, int month, int day) ;/*声明函数原型*/ int main() { int year, month, day ; /*year,month,day分别表示年、月、日*/ int total...

用C语言写一个函数给出年月日计算该日是该年的第几天//说明:你的程序存在几个语法错误,1、find(x,y,z)应改成find(int x,int y,int z)函数的定义语法;2、//int find(x,y,z);此处声明多余了,因为函数是在前面定义的,就无需再声明了,而...

用c语言编写一个函数功能是算出每个月的天数int GetMonthDays(int year,int month) { switch(month) { case 1: case 3: case 5: case 7: case 8: case 10: case 12: return 31; break; case 4: case 6: case 9: case...

C语言函数指针的调用问题?函数指针怎么用函数: int fun(int a,int b); 要定义指向该函数的指针 对比指向 int a; 的指针 int *p; p = &a; p的定义是怎么来的? 首先要保证p是一个指针类型 写下(*p), 然后,考虑下p的基类...

C语言指针以及函数调用#include void swap(int *p1,int *p2)//因为传入的数据类型为指针,所以修改了函数声明 { int p;//重复定义了p1,p2,删去了 p=*p1; *p1=*p2; *p2=p; } int main() { int n1,n2,n...

C语言大整数求阶乘C的语法已经比较生疏了,只能给你个算法了,见谅。 我认为用递归比较好。 factorial(int[] o){ if(最末一位 == 1 & sum(o) == 1) /*另外写个sum来求array的和,这个结果该不会超出i...

推荐阅读
图文推荐