Topic:
歷史上有許多計算圓周率pai的公式,其中,格雷戈里和萊布尼茨發現了下面的公式:
pai = 4*(1-1/3+1/5-1/7 …)
參見圖
這個公式簡單而優美,但美中不足,它收斂的太慢了,
如果我們四舍五入保留它的兩位小數,那么:
累積1項是:4.00
累積2項是:2.67
累積3項是:3.47
,,,
請你寫出它累積100項是多少(四舍五入到小數后兩位),
注意:只填寫該小數本身,不要填寫任何多余的說明或解釋文字,

Solution_1:
直接將加和減的情況分開運算
將1,5,9等的情況進行相加
將3,7,11等的情況進行相減
最后四舍五入到小數后兩位輸出
Code_1:
a = 0
for i in range(1, 200, 4):
a += (4 / i)
for j in range(3, 200, 4):
a -= (4 / j)
print(round(a, 2))
Solution_2:
利用遞回的演算法
首先判斷加和減的情況
之后不斷遞回i + 2和分別對ans進行加和減
最后滿足基準條件(第100項時 i 為197)取兩位小數后輸出
Code_2:
def circle(i, ans):
if i == 197:
return round(ans, 2)
if (i + 1) / 2 % 2 == 1:
return circle(i + 2, ans + 4 / i)
elif (i + 1) / 2 % 2 == 0:
return circle(i + 2, ans - 4 / i)
print(circle(1, 0))
Answer:
3.13
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/251777.html
標籤:python
