參考 題型範例 - 全國高級中等學校技藝競賽平台 工業類
題目:設計一連分數計算器
問題描述
在數學中,連分數(continued fraction)是特殊繁分數。如果 a0,a1,a2 … an, … 都是整數,則將分別稱為無限連分數和有限連分數。可簡記為無項 a0,a1,a2 … an … 和有限項  a0,a1,a2 … an。一般一個有限連分數表示一個有理數,一個無限連分數表示一個無理數。簡單的連分數或繁分數即如圖一所示或表示為  a0 + 1 / ( a1 + 1 / ( a2 + … ) ) ) ) 的數字,其中 a0 是某個整數,而所有其他的數 ai 都是正整數, x 是有理數分數,凡是每一個有限簡單連分數都可以化為一個有理數分數,反之亦然。用符號表示〔a0,a1,a2 … an] 叫做連分數的部分商。

例子1. 連分數〔1 , 2 , 3 , 4〕經由計算可經由底部向上乘逐步計算化簡為分數,過程如圖二所示:
$$ x = a_0 + \cfrac{1}{a_1 + \cfrac{1}{a_2 + \cfrac{1}{a_3 + \cdots } } } $$ $$ \begin{equation} x = 1 + \cfrac{1}{2 + \cfrac{1}{3 + \cfrac{1}{4}}} = 1 + \cfrac{1}{2+\cfrac{4}{13}} =1+\cfrac{13}{30}=\cfrac{43}{3} \end{equation} $$

例子2. 連分數〔4 , 2 , 5 , 5〕也可表示成運算式為 4 + 1 / ( 2+ 1 / ( 5 + 1 /5 ) ) ,其計算成為的分數過程由右向左計算如下:
4 + 1 / ( 2十1 / ( 5 + 1 / 5 ) ) = 4 + 1 / ( 2 + 5 / 26 ) = 4 + 26 / 57 = 254 / 57
請設計一程式能將有限項〔a0,a1,a2,...,an〕之連分數計算出分數。

輸入說明:
讓使用者輸入有限項正整數 $[a_0, a_1, a_2, \cdots ,a_n],1\le n\le 8$,也就是輸入項最多 9 項、最少 2 項,每一項的值介於 $1\le a_i\le 5$。

輸出說明:
輸出分數。

程式執行範例說明:

注意:
  1. 程式需可重複執行,字型大小至少 12。
  2. 程式的功能,要自己寫,不可以使用現成套件或程式庫。

範例一


     程式碼下載