看板 EE_DSnP 關於我們 聯絡資訊
※ 引述《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
joshepsol:給助教添麻煩了@@ 11/13 00:17