第八章 方法
8-1 方法的設計與呼叫
範例8-1a 示範以上方法的製作與呼叫。
【自我練習】
1、於組合的運算,階乘運算共要三次,請寫一程式,將階乘運算以呼叫方法完成,再呼叫此方法,完成組合運算。
2. 請寫程式完成1!+2!+3!+4!+5!+……+n!(n可由使用者輸入)。
3、將空間座標的內積運算,寫成方法,並呼叫。例如,P=(a,b,c),Q=(d,e,f),則P與Q的內積為ad+be+cf,內積運算結果為純量。
範例8-1b 示範以上二維陣列的語法。(請自行開啟所附檔案)。
8-2 參數的傳遞
範例8_2a 示範以上傳值呼叫。請自行開啟檔案。
自我練習
1、請將外積運算以方法完成,並呼叫此方求兩個三維向量的外積。例如,P=(a,b,c),Q=(d,e,f),則P與Q外積為(bf-ec,cd-af,ae-bd) ,外積運算結果仍為向量。例如,P(x軸)=(1,0,0),Q(y軸)=(0,1,0),則P與Q的外積為z軸(0,0,1),方向即為右手螺旋定則。
8-3 遞迴
範例8
範例8-3b請用遞迴法求費式數列(Filbonacci)的第n項。
自我練習
1、請用遞迴重做兩數相除的商與餘數。
2、請用遞迴重做二分猜值法求開根計算。
3、請用遞迴重做求兩數最大公因數。
8-4 實例探討
1、漢諾塔
2、迷宮問題
3、快速排序法
4、AB_Game。有一種遊戲為幾A 幾B 的猜數字遊戲,兩個人對玩,互相猜對方預先寫下的四位數(四位數中的阿拉伯數字不可重複),若所猜的數字與對方位置相同者為A,數字相同,位置不對,則稱為B。例如對方預寫的數字為6713,若猜6731 則應回應2A2B,若猜7851 則回應0A2B。試寫一程式,電腦自動產生四位數的亂數,再讓使用者猜的一種遊戲程式,且電腦應逐一回應結果。
5、ABGame vs 人工智慧。剛才是人腦猜數字,現在將改由電腦猜。
6、算式演算。
試根據以上後置記法的轉換與運算設計一程式處理數值的運算。為了簡化程式的撰寫,本例限定數值只能輸入一位數的整數,例如:輸入:2 + ( 4 – 3 ) * 2 ^ ( 3 * 1 )
結果是10。
7、排列組合與遞迴。
8、開根號。開根號演算法的原理如下:
(10a + b)2 = 100a2 + 20ab + b2 = 100a2 + (20a + b)×b
以138384 實際演練如右。
請寫一程式,完成以上開根號演算。
【習題】
1. 請將範例7
2. 請以遞迴法重作範例5
3. 請以遞迴法重作範例5-2b的10進位轉為N進位。
4. 請以二分猜值法重作除法運算。例如84除以3的商,必在0與84之間。
6. 請寫一個程式計算年利率為5%、6%、7%、8%時,貸款100、200、300、400萬時,每月需繳的利息,輸出格式如下:
7. 試寫一程式求(1)+(1+1/2)+(1+1/2+1/3)+…+(1+1/2+1/3+…1/N)之值。
8. 試寫一個九九乘法表電腦輔助教學程式,每次電腦依序出現10題一位數乘以一位數的乘法練習題,由使用者作答,並由電腦批改評分。
9. 請以遞迴法將所輸入的中英文字串前後反轉輸出。