读书人

C语言生手求教数学题

发布时间: 2013-02-24 17:58:56 作者: rapoo

C语言,新手求教,数学题
原题: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

[解决办法]

引用:
原题:
我的代码:
Objective C code?1234567891011121314#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……


每次循环的时候应该都对n进行处理
[解决办法]
main前加int。n的值不确定,补上初始化语句或键盘输入

读书人网 >C语言

热点推荐