?? 例2.1.txt
字號:
例2.1 求1×2×3×4×5。
可以用最原始的方法進行。
步驟1: 先求1×2,得到結果2。
步驟2: 將步驟1得到的乘積2再乘以3,得到結果6。
步驟3: 將6再乘以4,得24。
步驟4: 將24再乘以5,得120。這就是最后的結果。
這樣的算法雖然是正確的,但太繁瑣。如果要求1×2×…×1000,則要寫999個步驟,顯然是不可取的。而且每次都直接使用上一步驟的數值結果(如2,6,24等),也不方便。應當找到一種通用的表示方法。
可以設兩個變量,一個變量代表被乘數,一個變量代表乘數。不另設變量存放乘積結果,而直接將每一步驟的乘積放在被乘數變量中。今設p為被乘數,i為乘數。用循環算法來求結果。可以將算法改寫如下:
S1: 使p=1
S2: 使i=2
S3: 使p×i,乘積仍放在變量p中,可表示為p×i=>p
S4: 使i的值加1,即i+1=>i
S5: 如果i不大于5,返回重新執行步驟S3以及其后的步驟S4和S5;否則,算法結束。最后得到p的值就是5!的值。
上面的S1,S2…代表步驟1,步驟2……S是step(步)的縮寫。這是寫算法的習慣用法。
請讀者仔細分析這個算法,能否得到預期的結果。顯然這個算法比前面列出的算法簡練。
如果題目改為求1×3×5×7×9×11。
算法只需作很少的改動即可:
S1: 1=>p
S2: 3=>i
S3: p×i=>p
S4: i+2=>i
S5: 若i≤11,返回S3; 否則,結束。
可以看出,用這種方法表示的算法具有通用性、靈活性。S3到S5組成一個循環,在實現算法時,要反復多次執行S3、S4、S5等步驟,直到某一時刻,執行S5步驟時經過判斷,乘數i已超過規定的數值而不返回S3步驟為止。此時算法結束,變量p的值就是所求結果。
由于計算機是高速進行運算的自動機器,實現循環是輕而易舉的,所有計算機高級語言中都有實現循環的語句。因此,上述算法不僅是正確的,而且是計算機能實現的較好的算法。
請讀者仔細分析循環結束的條件,即S5步驟。如果在求1×2×…×11時,將S5步驟寫成
S5: 若i<11,返回S3。
這樣會有什么問題?會得到什么結果?
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -