作者reefuj (重要的是心 心阿)
看板EE_DSnP
标题Re: 关於4-1的问题
时间Mon Nov 12 23:52:54 2007
※ 引述《reefuj (重要的是心 心阿)》之铭言:
: 我撷取一段code来讨论一下大家常忽视的东西
: double pi1 , pi2;
: double error=fabs(pi2-pi1);
: 这是在宣告的部份
: 初始值没有给定
: 另外第二行给了有些同学错觉
: 他们会认为有了这行 error就永远是 = fabs( pi2 - pi1 );
: 其实只有当下啦, 之後当pi2或者pi1的值改变之後
: error的值不会自动更新....
: for(n=1;accuracy<error;n++)
: {
: pi1=4*pow(-1.0,int(n))*(1/(2*n+1))+4; <-- update pi1
: pi2=4*pow(-1.0,int(n+1))*(1/(2*n+3))+4; <-- update pi2
: }
: 这一段code的问题在於 accuracy < error
: 是这个for loop的{} 内容是否继续执行的条件
: 但是仔细想想 如果一但进入for里面
: 依照{}的内容更新了 pi1, pi2的值
: 那样子执行完之後再一次检查 accuracy < error 时
: 是否和执行前相同? 这意味这一旦进入这个for loop将会形成无穷回圈...
: 所以依照题意应该改变error的值...而且应该在这个for loop里面改变它
: 对了 这个pi1, pi2 凑不出题目要的无穷级数喔... 刚刚忘记加这句
最近有两个同学都觉得我po出上面for回圈里的两个式子长这样
所以他们就会长的很像....
其实 在我自己尝试去写的时候
我一点都不想让他们长的很像....
我写文章通常都是某个同学写信问我
然後我才会针对他的问题想要分享给大家
造成部分同学的误会深感抱歉
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.42.185
1F:推 joshepsol:给助教添麻烦了@@ 11/13 00:17