|
|
Matlab 教材:while 迴圈 |
這一節延續前一節 for-if-break 技術介紹 3x+1 問題 所討論的範例問題:3x+1 問題,有必要的話請先回去讀清楚。
凡是可以用 for 迴圈寫出來的程式,都可以改成 while 迴圈,反之亦然。 Matlab 也提供 while 迴圈語法,形如
while CONDITION
STATEMENTS;
end
其中 CONDITION 通常是一個邏輯計算,如有必要,請回頭看
[邏輯算子] 那一節。
執行的流程是
前一節程式的最後版本如下
x = 3;
for n=1:1000
if (rem(x,2))
x = 3*x+1
else
x = x/2
end
pause(1);
if (x == 1)
break;
end
end
它原來採用 for 迴圈,我們現在將它改成使用 while 迴圈:
x = 3;
n=0;
while (x>1) & (n<1000)
n = n+1;
if (rem(x,2))
x = 3*x+1
else
x = x/2
end
pause(1);
end
重要的差異在於,我們不需要 if-break 那套語句了。
一開始,我們需要設定 x 和 n 的值,
然後 CONDITION 相當於要檢查「x 不等於 1 而且 n 不到 1000」。
因為我們不處理負數情形,所以「x 不等於 1」
是寫成 x>1 而不是寫成 x~=1。
然後,STATEMENTS; 基本上與 for 迴圈版本相同,只是刪除 if-break 語句,
而且要記得把 n 換成下一個整數,否則 n 永遠是 1 那麼
n<1000 這個條件就等於白說了。
最後提醒兩件事
習題
![]() |
![]() |
| 單維彰 (2004/04/28) --- |