编写计算1+x+x2/2!+x3/3!+...+xn/n!的值。要求:一个函数实现求n!,另一个函数实现xn
#include <stdio.h>double f_1(int x,int n)
{
int i;
double fenzi=1;
for(i=1;i<=n;i++)
{
fenzi=fenzi*x;
}
return fenzi;
}
double f_2(int n)
{
int j;
double fenmu=1;
for(j=1;j<=n;j++)
{
fenmu=fenmu*j;
}
return fenmu;
}
void main()
{
int x,n;
scanf("%d %d",&x,&n);
printf("e_x(%d)=%lf\n",x,f_1(x,n)/f_2(n));
}
请告诉我哪里错了。。。算出来的数不准确啊。 你的2个算法写的没错,但少了一个算法,那就是你标题那个方程式的求解。你写的这两个算法只是单独的求出来其中一项的值。但你缺少了将每一项值加起来的算法。
这个问题是你程序的不足之处。再加一个求和算法就行,最后单独加1就行,因为x0/0!这是不成立的。
上面的问题解决完以后,咱们在谈一谈你这个程序最严重的BUG。那就是一旦涉及到了x的n次方运算以及n!阶乘运算的时候,一定要考虑一个问题,那就是大数据如何处理。因为不管你用的是什么基本类型,即便是double。他依然无法容纳下足够大的数字。
解决方法:一旦涉及大数字运算,这个是我以前写的,不知道是不是好方法,但是可以实现。利用char型数组代替double类型。因为我们知道char型数组是可以定义很多的。定义多大的数组就有多大的位数。char。个十百千四位。以此类推。。。
利用char型数组是件很麻烦的事情,因为你要为char数组指定double类型的运算规则。即:加1进位等。
就这些了,你自己琢磨把,算法是需要自己多思考的。代码我就不给出了。自己写出来才会有成就感。 新手求指导{:5_109:} 我是来看楼上大神的。。。
页:
[1]