鱼C论坛

 找回密码
 立即注册
查看: 1957|回复: 2

[已解决]编写了一个fun函数它有以下功能

[复制链接]
发表于 2019-2-17 17:34:50 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
s=1+x+x^2/2!+x^3/3!+.....+x^n/n!

  1. double fun(double x, int n)
  2. {
  3.         int i;
  4.         int m;
  5.         int k;
  6.         for(i=2;i<=n;i++){
  7.                     for(k=i;k>0;k--)
  8.                         {m=k*(k-1);}
  9.                 x+=pow(x,i)/m;}
  10.         return x+1;
  11. }
  12.        
复制代码


请问我编写的这个函数在哪里出错了???
最佳答案
2019-2-17 19:51:13
本帖最后由 jackz007 于 2019-2-17 22:22 编辑

        循环从 2 开始,会丢掉 s = 1 + x + x ^2 / 2 ! + . . .  + x ^n / n !  中的 x 那一项,其实,最要命的事情,是 x 还没有使用完就已经又被挪作它用,就是这句:

  1. x += pow(x , i) / m ;
复制代码


        连种子 x 都改了,这是不想继续过日子了?

        根据题目要求重写了代码,楼主可以测试一下:

  1. double fun(const double x , const int n)
  2. {
  3.         double s                                  ;
  4.         int i , k , m                             ;
  5.         s = 1.0                                   ;
  6.         for(k = 1 ; k <= n ; k ++) {
  7.                 m = 1                             ;
  8.                 for(i = 1 ; i <= k ; i ++) m *= i ;
  9.                 s += pow(x , k) / m               ;
  10.         }
  11.         return s                                  ;
  12. }
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-2-17 19:51:13 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2019-2-17 22:22 编辑

        循环从 2 开始,会丢掉 s = 1 + x + x ^2 / 2 ! + . . .  + x ^n / n !  中的 x 那一项,其实,最要命的事情,是 x 还没有使用完就已经又被挪作它用,就是这句:

  1. x += pow(x , i) / m ;
复制代码


        连种子 x 都改了,这是不想继续过日子了?

        根据题目要求重写了代码,楼主可以测试一下:

  1. double fun(const double x , const int n)
  2. {
  3.         double s                                  ;
  4.         int i , k , m                             ;
  5.         s = 1.0                                   ;
  6.         for(k = 1 ; k <= n ; k ++) {
  7.                 m = 1                             ;
  8.                 for(i = 1 ; i <= k ; i ++) m *= i ;
  9.                 s += pow(x , k) / m               ;
  10.         }
  11.         return s                                  ;
  12. }
复制代码


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-2-17 23:11:39 | 显示全部楼层
楼上的代码是对的,但感觉那个要命的没看懂
我只看的出m=k*(k-1)这个是写错了,因为循环完毕m始终等于1*0,导致结果输出为inf(无限大)
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-17 11:14

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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