c语言|C语言-阶乘之和

c语言|C语言-阶乘之和


①求阶乘之和s
s=1!+2!+···+k!  (1<=k<=n)
~
②程序
#include< stdio.h>
/*定义函数*/
long f(int n)
{
int i ;
long E ;
E=1;
for(i=1;i<=n;i++)E=E*i;
return E;

/*主函数*/
main()
{
long s;
int kn;
scanf(\"%d\"&n);
s=0;
for (k=1;k<=n;k++)s=s+f(k);
printf(\"%ld\\"s);

~
③解释
#include< stdio.h>
long f(int n)
/*没试过把f(n)写成f(i)*/
{
int i ;
long E ;
/*看见k!本来用字母k表示(k-1)! , 结果k为int 。
此处的E表示(k-1)! , 数字可能很大 , 定义为长整形long
没试过能不能把E直接定义为int*/
E=1;
/*E初始值必须从1开始 , 不能从0开始 , 不然E=E*i横为1*/
for(i=1;i<=n;i++)E=E*i;
return E;

/*主函数*/
main()
{
long s;
int kn;
scanf(\"%d\"&n);
/*输入阶乘次数上限n*/
s=0;
for (k=1;k<=n;k++)s=s+f(k);
/*如果s的初始值定为1 , 那么k就要从0开始了 , 连带把定义函数的i也改为从0开始*/
printf(\"%ld\\"s);
【c语言|C语言-阶乘之和】