C语言,新手求教,数学题
原题:
我的代码:
#include <stdio.h>
#include <math.h>
main()
{
float n,x,sum=1.0,y;
do
{x=n;
while(n>2)
x=x*(--n);/*求阶乘*/
y=1/x;
sum+=y;
}while(fabs(y)<1e-6);
printf("e=%f",sum);
}
执行后编译没问题,但是运行时不出结果,CPU一直在计算。。求教哪里出错了,我吧阶乘部分拿出来单独运行没问题。另外求个高效答案,谢谢 c
[解决办法]
每一项都是用前一项再除以一个 n++,所以不用每次循环都分别计算一次阶乘。
(你的程序似乎没看到初始化阿)
#include <iostream>
using namespace std;
int main(){
double lastItem=1.0,
sum=0.0;
int n=1;
while(lastItem>=1e-6){
sum+= lastItem;
lastItem/=(n++);
}
sum+= lastItem;
cout << "last item is the " << n <<"th: " << lastItem << endl
<< "e = " << sum << endl;
return 0;
}
run:
----
last item is the 11th: 2.75573e-07
e = 2.71828
[解决办法]
每次循环的时候应该都对n进行处理
[解决办法]
main前加int。n的值不确定,补上初始化语句或键盘输入