e=1+1/1!+1/2!+1/3!+1/4!+...........+1/(n-1)!+1/n!
用C语言编写,并且请大家谈谈思路
谢谢
e=1+1/1!+1/2!+1/3!+1/4!+...........+1/(n-1)!+1/n!
用C语言编写,并且请大家谈谈思路
谢谢
#include <stdio.h>
void main()
{
//由于不确定N的取值.所以用double类型存放阶乘结果.顺便也将e定义成double了.
double e,k;
int i,n;
scanf( "%d", &n );
k = 1;
e = 1;
for(i = 1; i <= n; i++) //从1循环到n. 每次循环都计算1到i当前数的阶乘.
{
k *= i; //i的阶乘...直到i等于n
e += 1.0 / k; //每次都让e加上1/i!
}
printf( "%lf\n", e ); //输出e
}
函数就是用两重循环。
double jiecheng()
{
int i,j,t=1,n;
double s=1.0;
printf("input n: ");
scanf("%d",&n);
for(i=0;i<n;i++)
{
for(j=1;j<=n;j++)
t*=i;
s+=1/t;
}
return s;
}
就递归阶乘 循环加
注意类型的一致即可
#include<iostream.h> double jc(int n) { double jg; if(n==0){ jg=1;} else { jg=n*jc(n-1); } return jg; } int main() { int n; cout<<"please input a number:"; cin>>n; double e=1; for(int i=1;i<=n;i++) { e=e+1/jc(i); } cout<<e<<endl; return 0; }
我用的是c++ 你改改输入输出格式应该就没问题了
两个循环,n个数用一个循环,每个数分母的阶乘再用一个循环
#include <stdio.h> int main()
{
int i,j,m=1,n; double sum=0; scanf("%d",&n); for(i=1;i<=n;i++) { for(j=1;j<=i;j++) m*=j; sum+=1.0/m; } printf("sum=%lf",sum); return 0; }