第八章 方法

8-1 方法的設計與呼叫

範例8-1a 示範以上方法的製作與呼叫。

【自我練習】

1、於組合的運算,階乘運算共要三次,請寫程式,將階乘運算以呼叫方法完成,再呼叫此方法,完成組合運算。

2.  請寫程式完成1!+2!+3!+4!+5!+……+n!n可由使用者輸入)。

 

3、將空間座標的內積運算,寫成方法,並呼叫。例如,P=(a,b,c)Q=(d,e,f),則PQ的內積為ad+be+cf,內積運算結果為純量。

範例8-1b 示範以上二維陣列的語法。(請自行開啟所附檔案)

 

8-2 參數的傳遞

範例8_2a 示範以上傳值呼叫。請自行開啟檔案。

自我練習

1、請將外積運算以方法完成,並呼叫此方求兩個三維向量的外積。例如,P=(a,b,c),Q=(d,e,f),則PQ外積為(bf-ec,cd-af,ae-bd) 外積運算結果仍為向量。例如,P(x)=(1,0,0)Q(y)=(0,1,0),則PQ的外積為z(0,0,1),方向即為右手螺旋定則。

 

8-3 遞迴

範例8-3a請使用遞迴求某一整數的階乘。例如6!=6*5*4*3*2*1

範例8-3b請用遞迴法求費式數列(Filbonacci)的第n項。

自我練習

1、請用遞迴重做兩數相除的商與餘數。

2、請用遞迴重做二分猜值法求開根計算。

3、請用遞迴重做求兩數最大公因數。

8-4 實例探討

1、漢諾塔

2、迷宮問題

3、快速排序法

4AB_Game。有一種遊戲為幾A B 的猜數字遊戲,兩個人對玩,互相猜對方預先寫下的四位數(四位數中的阿拉伯數字不可重複),若所猜的數字與對方位置相同者為A,數字相同,位置不對,則稱為B。例如對方預寫的數字為6713若猜6731 則應回應2A2B若猜7851 則回應0A2B。試寫程式,電腦自動產生四位數的亂數,再讓使用者猜的一種遊戲程式,且電腦應逐一回應結果。

5ABGame vs 人工智慧。剛才是人腦猜數字,現在將改由電腦猜。

6、算式演算。

試根據以上後置記法的轉換與運算設計程式處理數值的運算。為了簡化程式的撰寫,本例限定數值只能輸入位數的整數,例如:輸入:2 + ( 4 – 3 ) * 2 ^ ( 3 * 1 )

結果是10

7排列組合與遞迴。

8、開根號。開根號演算法的原理如下:

(10a + b)2 = 100a2 + 20ab + b2 = 100a2 + (20a + b)×b

138384 實際演練如右。

請寫程式,完成以上開根號演算。

 

【習題】

1.  請將範例7-2c7-3b以方法重作。

2.  請以遞迴法重作範例5-2a除法運算。

3.  請以遞迴法重作範例5-2b10進位轉為N進位。

4.  請以二分猜值法重作除法運算。例如84除以3的商,必在084之間。

6.  請寫一個程式計算年利率為5%、6%、7%、8%時,貸款100200300400萬時,每月需繳的利息,輸出格式如下:

7.  試寫程式求(1+1+1/2+1+1/2+1/3++1+1/2+1/3+1/N)之值。

8.  試寫一個九九乘法表電腦輔助教學程式,每次電腦依序出現10位數乘以一位數的乘法練習題,由使用者作答,並由電腦批改評分。

9.  請以遞迴法將所輸入的中英文字串前後反轉輸出。