2010-02-23 44 views
0

我想知道如果任何人都可以建議我如何實現這個循環中,以下僞代碼:實施循環從僞

8:循環
9:在F [0] = 0做
10:對於i = 1至N做
11:F [I¡1] = F [I]
12:C [N + 1 - I] = C [N - I]
13:端爲
14:f [N] = 0
15:C [0] = 0
16:K = K + 1
17:端而
18:如果度(F)= 0那麼
19:轉到步驟32
20:端如果
......... ...... ....
31:循環結束

我的問題是我應該如何實現上線8和兩端開始循環31歲;我對第8行到第31行之間的陳述很滿意,但是我在第8行使用什麼樣的循環,以及我給循環提供了什麼條件?

在此先感謝。

+1

氣味喜歡功課 – jldupont 2010-02-23 02:07:02

+1

什麼語言?這對我來說看起來像一個無限循環,你可以使用任何你想要的循環結構。只要確保你有辦法做第19步。 – 2010-02-23 02:07:19

+0

我正在使用Java,@jldupont,以及它適用於我的大學項目,所以是以某種方式完成作業:-) – 2010-02-23 02:19:49

回答

2

這是一個無限循環。沒有條件,只是永遠循環。唯一的出路就是進入步驟19.在C的語言,你可以寫爲while (true)for (;;)

for (;;) { 
    // ... 

    if (deg(f) == 0) { 
     goto afterLoop; 
    } 

    // ... 
} 

afterLoop: 
// ... 

goto是令人難以接受的,雖然。它會更好用break聲明,這將立即退出循環,以取代goto Step 32

for (;;) { 
    // ... 

    if (deg(f) == 0) { 
     break; 
    } 

    // ... 
} 

對於它的價值,如果你沒有步驟21-30,你可以使用一個do/while循環,當循環條件變爲在循環而不是頂部的底部:

do { 
    // ... 
} 
while (deg(f) != 0); 

如果線18-20是在迴路中的最後幾行那會工作。因爲它們不是,所以選項#2看起來就是一個選項。

+0

非常感謝,我不知道這是一個無限循環,我知道我必須擺脫它,我想我會用一個無限循環來實現它。 再次感謝。 – 2010-02-23 02:19:07

1

如果您打算在這樣的細節中編寫僞代碼,那麼您最好還是使用目標語言編寫代碼。僞代碼應該是一個更廣泛的刷 - 像這樣(與您的代碼無關):

for each bank account 
    check balance as of last month 
    if balance greater than promotion limit 
     send out valued customer pack 
    endif 
endfor