鱼C论坛

 找回密码
 立即注册
查看: 4009|回复: 3

编写计算1+x+x2/2!+x3/3!+...+xn/n!的值。要求:一个函数实现求n!,另一个函数实现xn

[复制链接]
发表于 2013-12-23 13:09:41 | 显示全部楼层 |阅读模式
10鱼币
#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!阶乘运算的时候,一定要考虑一个问题,那就是大数据如何处理。因为不 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-23 13:09:42 | 显示全部楼层
你的2个算法写的没错,但少了一个算法,那就是你标题那个方程式的求解。你写的这两个算法只是单独的求出来其中一项的值。但你缺少了将每一项值加起来的算法。
这个问题是你程序的不足之处。再加一个求和算法就行,最后单独加1就行,因为x0/0!这是不成立的。
上面的问题解决完以后,咱们在谈一谈你这个程序最严重的BUG。那就是一旦涉及到了x的n次方运算以及n!阶乘运算的时候,一定要考虑一个问题,那就是大数据如何处理。因为不管你用的是什么基本类型,即便是double。他依然无法容纳下足够大的数字。
解决方法:一旦涉及大数字运算,这个是我以前写的,不知道是不是好方法,但是可以实现。利用char型数组代替double类型。因为我们知道char型数组是可以定义很多的。定义多大的数组就有多大的位数。char[4]。个十百千四位。以此类推。。。
利用char型数组是件很麻烦的事情,因为你要为char数组指定double类型的运算规则。即:加1进位等。
就这些了,你自己琢磨把,算法是需要自己多思考的。代码我就不给出了。自己写出来才会有成就感。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-12-23 13:13:29 | 显示全部楼层
新手求指导
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-12-23 14:10:46 | 显示全部楼层
我是来看楼上大神的。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-23 02:46

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表