1. 程式人生 > 其它 >【藍橋杯JavaB組真題詳解】圓周率(2014)

【藍橋杯JavaB組真題詳解】圓周率(2014)

技術標籤:藍橋杯JavaB組真題詳解資料結構演算法程式語言java

題目描述

圓周率
數學發展歷史上,圓周率的計算曾有許多有趣甚至是**的故事。其中許多方法都涉及無窮級數。

圖1.png中所示,就是一種用連分數的形式表示的圓周率求法。

下面的程式實現了該求解方法。實際上數列的收斂對x的初始值 並不敏感。

結果打印出圓周率近似值(保留小數點後4位,並不一定與圓周率真值吻合)。

    double x = 111; 
    for(int n = 10000; n>=0; n--){
        int i = 2 * n + 1;
        x = 2 + (i*i / x);
    }
System.out.println(String.format("%.4f", ______________));

p1

解題思路

首先要分析程式碼中最重要的部分 for迴圈

n從10000開始不斷遞減
x = 2+20001 *20001 / 111
然後x = 2+19999 19999/x
最後為 x = 2+1
1/x;
即x最後是圖中這個部分
我們得到的結果跟圖中公式做對比
可以發現 我們得到的x是比這一部分多1
那麼這一部分可以用x-1表示
在這裡插入圖片描述

將這個部分看作x,便是很簡單的一個方程
4/兀 =x-1
解方程即可得到答案

參考程式碼

4 / (x - 1)

(友情提示:答題時不要加多餘“;”!!!)

新手創作學習,有錯誤歡迎指點,謝謝!