这是最近上C语言实验的一道非常简单的数学题,也是学校去年的上机考试题
就是给出公式,转换成代码就行了,不过我在课上,真没写出来?,今早又拿出来仔细复盘,在此记录一下
大概题目
用代码描述上述公式,要求最后一项大于1e-6
我课上写的
课上其实有些同学直接去CSDN上copy了(变量都不改,被老师骂了),我其实也去查了下,发现我的思路不也一样嘛,当时老师还提到了阶乘,都给提示了,我还是没想到自己的错误,最后还是没抄别人的代码,交了自己的错误答案上去了(我们的课堂作业和考试都是用FTP交的)
今早在wikipedia搜麦克劳林公式,然后得到这样一幅图
这下我就秒懂我的错误了,分母是阶乘,而不是
我理解成 2=1+12,6=2+22,这下压根跳不出循环了,子项是越来越大的 这下吃了数学的亏了,上学期学的公式都忘了,何况这个题目都完全给出了,而俺连题都没读对
修正后:
另外要注意的,本题作为分母的阶乘不要使用long,更不要用int存,会直接超出范围而溢出,可以用double或者long long,but 机房的VC6.0似乎并没有支持C99的long long,其实在课上我就一直在想是不是这个错误,因为之前写到过不管用哪个类型都会爆掉的,当时可以用科学计数法来存起来,输出也用科学计数法(会损失精度了),不过对这题来说方向完全错了
© 版权声明
THE END