#include
成都創(chuàng)新互聯(lián)公司公司2013年成立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目成都網(wǎng)站設(shè)計、做網(wǎng)站網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元榮昌做網(wǎng)站,已為上家服務(wù),為榮昌各地企業(yè)和個人服務(wù),聯(lián)系電話:18980820575
main(){
int
n,i,temp=1;
double
sum=0;
printf("請輸入n的值");
scanf("%d",n);
for(i=1;i=n;i++){
temp*=i;
sum
+=
0.1/temp;
//注意這個0.1,否則數(shù)據(jù)類型會搗亂……
}
printf("1!+1/2!+1/3!+......+1/n!的值為:%f\n",sum);
}
^_^
~~
你在定義一個sum用來保存階乘,整個的代碼
#include
void
main()
{
double
s=0,i,n;
double
sum
=
1;
printf("請輸入n的大小");
scanf("%lf",n);
for(i
=
1;
i
=
n;
i++)
{
sum
=
sum*i;
s
+=
1/sum;
}
printf("計算的結(jié)果為%.3f",s);
}
#includestdio.h
#if 0
double fun(int a)
{
int i,j;
double m,S=1.0;
for(i=2;i=a;i++)
{
m=1.0;
for(j=1;j=i;j++)//--變++不變也可
{
m*=j;//改了一下
}
S+=1.0/m;
}
return S;
}
#endif
//優(yōu)化了一下
double fun(int a)
{
int i,j;
double m=1.0,S=1.0;
for(i=1;i=a;i++)//從0算起,從1算起的話改回:for(i=2;i=a;i++)
{
m*=i; // 求階乘
S+=1.0/m;//倒數(shù)相加
}
return S;
}
main()
{
int n,sum;
scanf("%d",n);
sum=fun(n);
printf("%d\n",sum);
}
你的求倒數(shù)算法的結(jié)果為零,因為使用了整數(shù)相除結(jié)果為整除的商。
另外一重循環(huán)就可以了!
/*factorial*/
#includestdio.h
float Factorial(int n);//求階乘的函數(shù)
float Sum(int n);//求階乘前n項倒數(shù)和的函數(shù)
int main()
{
int i;
int num;
scanf("%d",num);
for( i=1;inum+1;++i)
{
printf("1/%d! = ",i);//輸出 “n!”
printf("%f\n",1/Factorial(i));//輸出n!的值
}
for(i=1;inum;++i)
printf("1/%d!+",i);//輸出1!+1/2!+…+1/(n-1)!+
printf("%d!=%f\n", i,Sum(i) );//輸出1/n!=前n項的階乘倒數(shù)和
return 0;
}
float Factorial(int n)
{
if(n==0||n==1)
return 1;//0!=1||1!=1
else return n*Factorial(n-1);//其他的階乘n!=n*(n-1)*…1
}
float Sum(int n)
{
float N=1/Factorial(n);//用N代表數(shù)n的階乘的倒數(shù)
if(N==1) return 1;//如果N=1則說明只有一項即n=1
else return N+Sum(n-1);//其他的情況返回前n項階乘倒數(shù)之和
}