問題是分別用While Loop和For Loop迴圈計算3道等差數列的總和,分別以算法(A)和算法(B)輸出結果

 


關於這一系列問題做法大同小異,重點在於限制條件


算法(A)的限制條件是起始值(a)與項數(N)這2項變數,因為條件明確比較好處理


算法(B)的限制條件是起始值(a)與末項值(M)這2項變數,這2項變數屬於不明確條件,因為有太多可能的組合變化,也因此若要把所有的可能都列入程式會很複雜。在此只固定其中一項條件:若輸入的末項值(M)不是正確的數值時,以最接近但不大於輸入的末項值(M)的正確末項值(M)來計算

 

其中第1題和第2題數列每個值的差是固定的,不管是算法(A)或算法(B)都很好處理。第3題數列每個值的差是遞增的,算法(A)或While Loop還沒有問題,用For Loop做算法(B)時很難。為了簡化程式用了有點偷吃步的方法,就是在達到正確條件時強制停止迴圈

 

 

 

第1題:1+3+5+7+9+…


算法(A)

20101205-01  

 

20101205-02  

 

 

算法(B)

20101205-03  

 

20101205-04  

 

 

 

第2題:2+5+8+11+14+…


算法(A)

20101205-05  

 

20101205-06  

 

 

算法(B)

20101205-07  

 

20101205-08  

 

 

 

第3題:1+2+4+7+11+16…


算法(A)

20101205-09  

 

20101205-10  

 

 

算法(B)

20101205-11  

 

20101205-12  

,

未出師的小工程師 發表在 痞客邦 PIXNET 留言(0) 人氣()