看板 C_and_CPP 關於我們 聯絡資訊
double pi(int k) { double pi = 0.0; int i; for(i=0; i<k; i++) { if(i%2==0) { pi += 1.0/(2.0*i + 1.0); } else { pi -= 1.0/(2.0*i + 1.0); } } return 4*pi; } int main() { int i=0, j; printf("intput j: "); scanf("%d", &j); 每一次的回圈都會重算一次一樣的東西 ↓請移到迴圈外,宣告一個變數把他記起來 while( fabs(pi(i+1) - pi(i)) >= pow(10, -j) ) // fabs浮點絕對值,pow次方 { │當i=1時,你的迴圈計算了一次 pi(2)、pi(1) 當i=2時,你的迴圈計算了一次pi(3)、pi(2) 請不要重複計算之前算過的東西 i++; } printf("\n"); printf("(1)the smallest i => %d\n\n", i); printf("(2)the pi(i) => %lf\n\n", pi(i)); system("pause"); return 0; } -- ◢ 鄉民啊!鄉民! 請告訴我誰是最純潔的人! ◢█ │ PTT │ ██ :就是你!Snow White F23ko!│ █◤ ╯ ◤ ﹨(╯▽╰ )∕ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.27.109.99
AppleFox:可以的話盡量不要一直用pow()算值 用乘法速度會差很多 03/02 13:31