王進(jìn)
算法的三種基本結(jié)構(gòu)——順序結(jié)構(gòu)、選擇結(jié)構(gòu)和循環(huán)結(jié)構(gòu)中,循環(huán)結(jié)構(gòu)相對其他兩種結(jié)構(gòu)而言,較難理解和掌握,以致不少同學(xué)常被循環(huán)轉(zhuǎn)得頭暈?zāi)垦#?/p>
循環(huán)結(jié)構(gòu)有兩種基本形式,一種是直到型循環(huán)(圖1),另一種是當(dāng)型循環(huán)(圖2).
這兩種結(jié)構(gòu)的邏輯順序不同,直到型循環(huán)是先執(zhí)行再判斷,不滿足條件時執(zhí)行循環(huán)體,滿足條件時結(jié)束循環(huán);當(dāng)型結(jié)構(gòu)是先判斷再執(zhí)行,滿足條件時執(zhí)行循環(huán)體,不滿足條件時結(jié)束循環(huán).
兩種結(jié)構(gòu)可以相互轉(zhuǎn)換,滿足同樣的意義.與兩種結(jié)構(gòu)相對應(yīng)的偽代碼有Do語句和While語句.
我們用循環(huán)結(jié)構(gòu)及其偽代碼解決問題時,主要涉及初始值、判斷條件、循環(huán)體和終點值的設(shè)置,由于循環(huán)結(jié)構(gòu)及其偽代碼涉及的因素較多,同學(xué)們常常因判斷和理解不到位,而導(dǎo)致一些錯誤.本文幫你厘清循環(huán)結(jié)構(gòu)易出錯的關(guān)鍵環(huán)節(jié)——初值、判斷條件、循環(huán)體及終點值,讓你神清氣爽地面對循環(huán),面不改色頭不暈!
一、設(shè)置初始值不可急于求成
例1 設(shè)計一個算法,計算2+4+6+8+…+98+100的值.
剖析 這是一個直到型循環(huán)結(jié)構(gòu).有的同學(xué)只顧前兩個值2和4,而不注意循環(huán)體執(zhí)行帶來的變化.按照前一個流程圖執(zhí)行出來的結(jié)果是2+6+8+…+100.錯誤的原因是I的初始值是4,而循環(huán)體中先執(zhí)行了I=I+2,使得I的值變?yōu)榱?,而致最終結(jié)果少加了4.簡潔的修改可把初始值改為I=2即完成解答.
二、循環(huán)體內(nèi)的執(zhí)行先后有別
例2 設(shè)計一個算法,計算1×2×3×4×…×98×99的值.
剖析 這是一個當(dāng)型循環(huán)結(jié)構(gòu).按照前一個流程圖執(zhí)行出來的結(jié)果是1×3×4×5×…×100.錯因是循環(huán)體中按照箭頭方向先執(zhí)行了I=I+l,使得I的值變?yōu)榱?,再執(zhí)行T=T×I,而致最終結(jié)果少乘了2,多乘了100.把T=T×I與I=I+l的順序顛倒一下即可得到正確的算法,算法是對一類問題機(jī)械的、統(tǒng)一的解決方法,其步驟的順序不可隨意顛倒.
三、判斷條件要首尾兼顧
例3 寫出一個計算10個數(shù)的平均數(shù)的偽代碼.
分析 先利用循環(huán)結(jié)構(gòu)計算10個數(shù)的和S,再計算10個數(shù)的平均數(shù).句,先判斷后執(zhí)行.當(dāng)I=l時,累加輸入的第1個數(shù),當(dāng)I=2時,累加輸入的第2個數(shù),當(dāng)I=3時,累加輸入的第3個數(shù)……以此類推,當(dāng)I=9時,累加輸入的第9個數(shù)的和,而當(dāng)I=10時,卻不符合判斷的條件而結(jié)束循環(huán),即第10個數(shù)沒有算人S,出錯!簡潔的修改方式可把I<10改為I 四、循環(huán)體內(nèi)的賦值需各司其職 例4 寫出一個計算1/1×3+1/3×5+1/5×7+…+1/99×101而的偽代碼. 剖析 這是直到型結(jié)構(gòu)的Do循環(huán)語句.同學(xué)們常因?qū)ψ兞縎和變量I的認(rèn)識不清,導(dǎo)致兩者的賦值顛倒,從而出現(xiàn)與所求問題相差很大的結(jié)果,一般在循環(huán)結(jié)構(gòu)中有兩個變量,一個是變量S,用來貯存累加或累乘的結(jié)果;另一個是變量I,用來控制循環(huán)的次數(shù)和在S的基礎(chǔ)上構(gòu)建累加或累乘的變量形式, 在高考當(dāng)中,命題者常常以循環(huán)結(jié)構(gòu)為載體考查算法的相關(guān)內(nèi)容.作為初學(xué)者,我們要認(rèn)清循環(huán)結(jié)構(gòu)的各種表達(dá)方式,比如直到型循環(huán)和當(dāng)型循環(huán),While語句和Do語句,理解它的每一個環(huán)節(jié),把握算法是對一類問題機(jī)械的、統(tǒng)一的解決方法這一核心觀念,按部就班地檢驗它的初值、判斷條件、循環(huán)體及終點值,逐步調(diào)整,這樣我們才能夠以不變應(yīng)萬變,不被循環(huán)轉(zhuǎn)昏了頭!