版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
SimpRead我們在上一講提到程序有順序、選擇、循環(huán)的一種結(jié)構(gòu)。循環(huán)結(jié)構(gòu)可以用短短幾行代碼,執(zhí)行成千上萬次的運(yùn)算。從計(jì)算機(jī)編程的視角來看,循環(huán)結(jié)構(gòu)又有三種實(shí)現(xiàn)方法,分別是forSimpRead我們在上一講提到程序有順序、選擇、循環(huán)的一種結(jié)構(gòu)。循環(huán)結(jié)構(gòu)可以用短短幾行代碼,執(zhí)行成千上萬次的運(yùn)算。從計(jì)算機(jī)編程的視角來看,循環(huán)結(jié)構(gòu)又有三種實(shí)現(xiàn)方法,分別是for循環(huán)、while循環(huán)和dowhile循環(huán);而從數(shù)學(xué)視角來看,循環(huán)結(jié)構(gòu)很像是納法。牌還會撞倒第三個(gè)骨牌。以此類推,即使骨牌數(shù)量再多,也會逐一被放倒。第一,對于任意第i個(gè)骨牌而言,它的倒下能帶動(dòng)第i+1個(gè)骨牌倒下;“循環(huán)”的思想也存在我們的古文化中,《愚公移山》的“又有子,子又有孫;子子孫孫無窮匱也?!焙喍灾褪牵矣袃鹤?,我兒子也有兒子,我兒子的兒子也會有兒子。以此類推,子子孫孫無窮盡。第一,任意一代男子(或者說是兒子),第二,愚公有個(gè)兒子。一下。最簡單常見的數(shù)學(xué)歸納法是,用來證明當(dāng)n等于任意一個(gè)自然數(shù)時(shí)某個(gè)命題成立,其證明步驟可以分下第一,當(dāng)n=1第二,假設(shè)對于任意一個(gè)數(shù)字i命題成立,可以推導(dǎo)出在對于i+1后代,至少有一個(gè)兒子?!纠?】證明對于任意一個(gè)正整數(shù)n,它的2n是偶數(shù)。第一步,當(dāng)n=1時(shí),2n=2×1=2是偶數(shù)。第二步,假設(shè)對于某個(gè)正整數(shù)i而言,2i是偶數(shù),則2(i+1)=2i+2。其中2i為偶數(shù),2為偶數(shù),兩個(gè)偶數(shù)之和也是偶數(shù),因此2(i+1)也是偶數(shù)。根據(jù)數(shù)學(xué)歸納法可以知道,對于任意一個(gè)正整數(shù)n,2n【例2】求證1+3+5+...+(2k-1)=k2第一步,當(dāng)k=1時(shí),根據(jù)數(shù)學(xué)歸納法可以知道,對于任意一個(gè)正整數(shù)n,2n【例2】求證1+3+5+...+(2k-1)=k2第一步,當(dāng)k=1時(shí),1=12第二步,假設(shè)對于任意一個(gè)正整數(shù)i而言,1+3+5+...+(2i-1)=i2,則1+3+5+...+(2i-1)+[2(i+1)-1]=i2+[2(i+1)-1]=i2+2i+2-1=i2+2i+1=(i+1)2原命題依然成立。因此1+3+5+...+(2k-1)=k2綜上這兩個(gè)例子,你會發(fā)現(xiàn)它們都是要證明“下一張多米諾骨牌”能夠倒下,也就是在證明“i推進(jìn)到i+1的過程”。具體而言,這兩個(gè)例子的第二步都分別在求證2(i+1)是偶數(shù),以及(i+1)2成立,這種數(shù)學(xué)歸到一個(gè)循環(huán)結(jié)構(gòu)的程序中。我們在大學(xué)C語言的課程中曾經(jīng)學(xué)過,循環(huán)結(jié)構(gòu)的實(shí)現(xiàn)方法有三種,分別是for循環(huán)、while循環(huán)和do-while循環(huán)。為了簡潔,下面我們定義s1是初始表達(dá)式,s2是條件表達(dá)式,s3叫作末尾循環(huán)體,s4是中間循環(huán)體,并將其代入這三個(gè)循環(huán)結(jié)構(gòu)中,對比學(xué)習(xí)它們之間的聯(lián)系與不同。for如剛剛所定義的,s1是初始表達(dá)式,s2是條件表達(dá)式,s3叫作末尾循環(huán)體,s4for循環(huán)的執(zhí)行順序是s1、(s2,s4,s3)、(s2,s4,s3)、...、(s2,s4,s3)、s2例如,求解1到50所有整數(shù)之和,可以用forintresult=for(inti=1;i<=50;result+=體,最后第4行運(yùn)算對應(yīng)的是s4中間循環(huán)體。先執(zhí)行i=1,再判斷i≤50與否,如果為真,則執(zhí)行第4行的運(yùn)算,最后執(zhí)行i++;接著循環(huán),再判斷i≤50與否,如果為真,則執(zhí)行第4行的運(yùn)算,最后執(zhí)行i++;經(jīng)過多次循環(huán)后,再判斷i≤50與否,直到結(jié)果為假,跳出循環(huán)結(jié)束。for循環(huán)還有很多變種,具體而言就是s1、s2和s4都可以被省略或部分省略。圍繞上面的例子,s1的2fors1的部分,這樣新的代碼可以寫作:intresult=inti=for(;i<=50;result+=intresult=inti=for(;i<=50;result+=根據(jù)代碼執(zhí)行的順序,可以發(fā)現(xiàn)s3的執(zhí)行永遠(yuǎn)是在s4之后。因此,可以把s3和s4s4intresult=inti=for(;i<=50;result+=同樣,s2的執(zhí)行永遠(yuǎn)在s4之前,也就意味著s2可以被放在循環(huán)體中的s4之前,而把for語句中s2的位置空閑出來。但最后一次的s2執(zhí)行,還肩負(fù)著結(jié)束循環(huán)的任務(wù),因此需要結(jié)合if條件判斷語句和break語句,完成最后跳出循環(huán)的實(shí)現(xiàn),這樣新的代碼可以寫作:intresult=inti=for(;;if(i>result+=2.whileif(i>result+=2.while循環(huán)的另外一個(gè)實(shí)現(xiàn)方式是while循環(huán),while循環(huán)的代碼結(jié)構(gòu)如下:如剛剛所定義的,s2是條件表達(dá)式,s4是中間循環(huán)體。真,則執(zhí)行s4;繼續(xù)循環(huán)判斷s2是否成立,如果為真,則執(zhí)行s4;如此循環(huán)多次后,直到s2不再成我們繼續(xù)使用while循環(huán)來實(shí)現(xiàn)1~50inti=intresult=while(i<result+=同樣地,如for循環(huán)一樣,while循環(huán)也有一些變種。具體而言,s2也是可以被省略而用其他方法實(shí)現(xiàn)。從循環(huán)執(zhí)行的順序可以發(fā)現(xiàn),s2的執(zhí)行總是在s4之前;而最后一次s2循環(huán)的任務(wù)。這就需要if條件語句和breakinti=intresult=whileif(i>resultintresult=whileif(i>result+=3.dowhile最后一種循環(huán)實(shí)現(xiàn)的方法是dowhile循環(huán),dowhile循環(huán)的基本結(jié)構(gòu)如下:如剛剛所定義的,s2是條件表達(dá)式,s4是中間循環(huán)體。dowhile循環(huán)與while循環(huán)相比,區(qū)別就是執(zhí)行順序的調(diào)整。dowhile循環(huán)中,無論s2是真是假,都會至少執(zhí)行一次s4。這樣它的執(zhí)行順序就是(s4,s2)、(s4,s2)...(s4,s2)。具體而言就是:先執(zhí)行s4,再來判斷s2是真是假,如果為真,則執(zhí)行s4;再來判斷s2是真是假,如果為真,則執(zhí)行s4;再來判斷s2是真是假……如此循環(huán)多次之后,直到s2為假,跳出循環(huán)結(jié)束。我們?nèi)砸?~50所有整數(shù)求和為例,看一下dowhileinti=intresult=doresult+=}while(i<=dowhile循環(huán)也有一些變種,其s2語句也可以被調(diào)整到其循環(huán)體中,可以考慮用if條件語句和inti=intresult=inti=intresult=doresult+=if(i>從代碼執(zhí)行的順序來看,while循環(huán)與for循環(huán)都是先判斷條件,再執(zhí)行循環(huán)體。在極端情況下,第一次判斷條件就不成功,循環(huán)體就有可能一次也不被執(zhí)行;而dowhile循環(huán)則相反,它先執(zhí)行循環(huán)體,從編碼的視角來看,while循環(huán)和dowhile循環(huán),在條件判斷的括號中只需要寫循環(huán)條件;而for循環(huán)while循環(huán)至少會執(zhí)行一次循環(huán)體,它如何能被其他循環(huán)結(jié)構(gòu)替代呢?這就要借助break語句提前跳出在不考慮代碼結(jié)構(gòu)的美觀時(shí),這三種循環(huán)語句可以在功能上實(shí)現(xiàn)彼此之間的切換,我們以for向dowhile如下是任意一個(gè)for循環(huán)其執(zhí)行順序?yàn)閟1、(s2,s4,s3)、(s2,s4,s3)...(s2,s4,s3)、s2它可以用下面的while循環(huán)根據(jù)其執(zhí)行順序?yàn)閟1、(s2,s4,s3)、(s2,s4,s3)...(s2,s4,s3)、s2它可以用下面的while循環(huán)根據(jù)while語句的執(zhí)行順序可知,這段代碼的執(zhí)行順序?yàn)閟1、(s2,s4,s3)、(s2,s4,s3)...(s2,s4,s3)、因此可以得知,兩段代碼的功能結(jié)果完全一致。而如果非要采用dowhile循環(huán)do在這里,我們補(bǔ)充一下break語句的知識。break語句的作用是,終止并跳出循環(huán),繼續(xù)執(zhí)行循環(huán)語句以上面的代碼為例,一旦第3行的條件判斷通過,則需要執(zhí)行beak語句。b以上面的代碼為例,一旦第3行的條件判斷通過,則需要執(zhí)行beak語句。beak當(dāng)前循環(huán),這樣程序就會從第4行跳轉(zhuǎn)至第10行繼續(xù)執(zhí)行?;赽eak語句,再根據(jù)dowhile語句的執(zhí)行順序可知,這段代碼的執(zhí)行順序?yàn)閟1、(s2,s4,s3)、(s2,s4,s3)...(s2,s4,s3)、s2,因此可以得知兩段代碼的功能結(jié)果完全一致。這里要給大家提個(gè)醒:如果是在技術(shù)面試時(shí),千萬不要說某某功能的開發(fā),只能用for循環(huán)、while循環(huán)或dowhile循環(huán),這一定是錯(cuò)的。因?yàn)?,功能上這三種循環(huán)的實(shí)現(xiàn)是完全可以實(shí)現(xiàn)互換的;只不數(shù)學(xué)歸納法和循環(huán)結(jié)構(gòu)有很多相似之處,它們都是動(dòng)作集合。數(shù)學(xué)歸納法不關(guān)注歸納過程的結(jié)束而循環(huán)結(jié)構(gòu)作為一種程序開發(fā)邏輯,則必須要關(guān)注循環(huán)過程的結(jié)束或死機(jī)。歸納法的問題增加一個(gè)截止條件的限制,那就是k小于100時(shí)。這道例題是:證明在k<100時(shí),1+3+5+...+(2k-1)=k2證明k=1假設(shè)k=i時(shí)等式成立后,k=i+1令s1為k=,s4為等式成立,s3為k=i或k=i+1,再補(bǔ)充題目的終止條件k<100為s2。這樣,根據(jù)for循環(huán)執(zhí)行的邏輯,把這些動(dòng)作按照s1、(s2,s4,s3)、(s2,s4,s3)...(s2,s4,s3)、s2基本的for循環(huán)代碼框架。在這個(gè)框架中,最開始的s1、s2、s4,即為當(dāng)k=1在這個(gè)框架中,任意相鄰的兩組(s2,s4,s3)、(s2,s4,s3),就是假設(shè)k=i時(shí)等式成立后,k=i+1等式也就是說,此時(shí)的數(shù)學(xué)歸納法證明和for循環(huán)實(shí)現(xiàn),在功能上是等價(jià)的,我們給出for循環(huán)的代碼如intleft=intleft_temp=intright=for(intk=1;k<100;left_temp=2*k-leftrightk*if(leftprintf("%disleftrightk*if(leftprintf("%dis代碼的前三行定義了3個(gè)變量,分別是left、left_temp和right,其中l(wèi)eft和right分別用來存儲等式兩邊的結(jié)果,left_temp用來存儲公式中每輪增加的一項(xiàng);第4行,進(jìn)入for循環(huán),得到對應(yīng)的s1、s2和s3;第6行,計(jì)算出當(dāng)前一輪的left_temp值;第7行,把left_temp作為增量,增
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度個(gè)人應(yīng)急資金公對私借款合同3篇
- 二零二五年度企業(yè)公務(wù)車使用及安全保障合同3篇
- 2025年度廢化學(xué)品回收與無害化處理合同樣板3篇
- 二零二五年度養(yǎng)豬場養(yǎng)殖廢棄物無害化處理合同3篇
- 2025年度年度甲級寫字樓辦公室租賃合同樣本3篇
- 二零二五年度木工次結(jié)構(gòu)工程監(jiān)理與施工合同2篇
- 二零二五年度英法德留學(xué)一站式服務(wù)合同3篇
- 2025年度農(nóng)村土地承包經(jīng)營權(quán)入股農(nóng)業(yè)合作社合同2篇
- 二零二五年度農(nóng)村荒山荒地生態(tài)旅游項(xiàng)目投資承包合同
- 2025年度水電設(shè)備安裝合同分包售后服務(wù)合同3篇
- 保潔人員院感培訓(xùn)完整版課件
- 醫(yī)院發(fā)熱門診工作考核表
- 基于PLC的燃油鍋爐控制系統(tǒng)設(shè)計(jì)
- DB13T 2974-2019 信息系統(tǒng)集成服務(wù)資費(fèi)評估指南
- 春節(jié)期間施工現(xiàn)場安全方案
- 黑龍江省建筑工程施工質(zhì)量驗(yàn)收標(biāo)準(zhǔn)DB23-2017
- 自貢鴻鶴化工股份有限公司20萬噸離子膜燒堿等量搬遷升級改造項(xiàng)目
- 醫(yī)院關(guān)于成立安全生產(chǎn)領(lǐng)導(dǎo)小組的通知
- 【施工方案】空調(diào)百葉施工方案
- ppt模板熱烈歡迎領(lǐng)導(dǎo)蒞臨指導(dǎo)模板課件(15頁P(yáng)PT)
- 領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)1
評論
0/150
提交評論