




已閱讀5頁,還剩18頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
普通高中課程標(biāo)準(zhǔn)實(shí)驗(yàn)教科書數(shù)學(xué) 人教版 高三新數(shù)學(xué)第一輪復(fù)習(xí)教案(講座17)算法案例一課標(biāo)要求:通過閱讀中國古代數(shù)學(xué)中的算法案例,體會(huì)中國古代數(shù)學(xué)對(duì)世界數(shù)學(xué)發(fā)展的貢獻(xiàn)。二命題走向算法是高中數(shù)學(xué)新課程中的新增內(nèi)容,本講的重點(diǎn)是幾種重要的算法案例思想,復(fù)習(xí)時(shí)重算法的思想輕算法和程序的構(gòu)造。預(yù)測(cè)2007年高考隊(duì)本講的考察是:以選擇題或填空題的形式出現(xiàn),分值在5分左右,考察的熱點(diǎn)是算法實(shí)例和傳統(tǒng)數(shù)學(xué)知識(shí)的結(jié)合題目。三要點(diǎn)精講1求最大公約數(shù)(1)短除法求兩個(gè)正整數(shù)的最大公約數(shù)的步驟:先用兩個(gè)數(shù)公有的質(zhì)因數(shù)連續(xù)去除,一直除到所得的商是兩個(gè)互質(zhì)數(shù)為止,然后把所有的除數(shù)連乘起來。(2)窮舉法(也叫枚舉法)窮舉法求兩個(gè)正整數(shù)的最大公約數(shù)的解題步驟:從兩個(gè)數(shù)中較小數(shù)開始由大到小列舉,直到找到公約數(shù)立即中斷列舉,得到的公約數(shù)便是最大公約數(shù) 。(3)輾轉(zhuǎn)相除法輾轉(zhuǎn)相除法求兩個(gè)數(shù)的最大公約數(shù),其算法可以描述如下: 輸入兩個(gè)正整數(shù)m和n; 求余數(shù)r:計(jì)算m除以n,將所得余數(shù)存放到變量r中;更新被除數(shù)和余數(shù):m=n,n=r;判斷余數(shù)r是否為0。若余數(shù)為0,則輸出結(jié)果;否則轉(zhuǎn)向第步繼續(xù)循環(huán)執(zhí)行。如此循環(huán),直到得到結(jié)果為止。(4)更相減損術(shù)我國早期也有解決求最大公約數(shù)問題的算法,就是更相減損術(shù)。在九章算術(shù)中記載了更相減損術(shù)求最大公約數(shù)的步驟:可半者半之,不可半者,副置分母子之?dāng)?shù),以少減多,更相減損,求其等也,以等數(shù)約之。步驟:任意給出兩個(gè)正數(shù);判斷它們是否都是偶數(shù)。若是,用2約簡(jiǎn);若不是,執(zhí)行第二步。以較大的數(shù)減去較小的數(shù),接著把較小的數(shù)與所得的差比較,并以大數(shù)減小數(shù)。繼續(xù)這操作,直到所得的數(shù)相等為止,則這個(gè)數(shù)(等數(shù))就是所求的最大公約數(shù)。2秦九韶算法秦九韶算法的一般規(guī)則:秦九韶算法適用一般的多項(xiàng)式f(x)=anxn+an-1xn-1+.+a1x+a0的求值問題。用秦九韶算法求一般多項(xiàng)式f(x)= anxn+an-1xn-1+.+a1x+a0當(dāng)x=x0時(shí)的函數(shù)值,可把n次多項(xiàng)式的求值問題轉(zhuǎn)化成求n個(gè)一次多項(xiàng)式的值的問題,即求v0=anv1=anx+an1v2=v1x+an2v3=v2x+an3.vn=vn1x+a0觀察秦九韶算法的數(shù)學(xué)模型,計(jì)算vk時(shí)要用到vk1的值,若令v0=an。我們可以得到下面的遞推公式:v0=anvk=vk1+ank(k=1,2,n)這是一個(gè)在秦九韶算法中反復(fù)執(zhí)行的步驟,可以用循環(huán)結(jié)構(gòu)來實(shí)現(xiàn)。3.排序排序的算法很多,課本主要介紹里兩種排序方法:直接插入排序和冒泡排序(1)直接插入排序在日常生活中,經(jīng)常碰到這樣一類排序問題:把新的數(shù)據(jù)插入到已經(jīng)排好順序的數(shù)據(jù)列中。例如:一組從小到大排好順序的數(shù)據(jù)列1,3,5,7,9,11,13,通常稱之為有序列,我們用序號(hào)1,2,3,表示數(shù)據(jù)的位置,欲把一個(gè)新的數(shù)據(jù)8插入到上述序列中。完成這個(gè)工作要考慮兩個(gè)問題:(1)確定數(shù)據(jù)“8”在原有序列中應(yīng)該占有的位置序號(hào)。數(shù)據(jù)“8”所處的位置應(yīng)滿足小于或等于原有序列右邊所有的數(shù)據(jù),大于其左邊位置上所有的數(shù)據(jù)。(2)將這個(gè)位置空出來,將數(shù)據(jù)“8”插進(jìn)去。對(duì)于一列無序的數(shù)據(jù)列,例如:49,38,65,97,76,13,27,49,如何使用這種方法進(jìn)行排序呢?基本思想很簡(jiǎn)單,即反復(fù)使用上述方法排序,由序列的長(zhǎng)度不斷增加,一直到完成整個(gè)無序列就有序了。首先,49是有序列,我們將38插入到有序列49中,得到兩個(gè)數(shù)據(jù)的有序列:38,49,然后,將第三個(gè)數(shù)據(jù)65插入到上述序列中,得到有序列:38,49,65按照這種方法,直到將最后一個(gè)數(shù)據(jù)65插入到上述有序列中,得到13,27,38,49,49,65,76,97這樣,就完成了整個(gè)數(shù)據(jù)列的排序工作。注意到無序列“插入排序算法”成為了解決這類問題的平臺(tái)。(2)冒泡法排序所謂冒泡法排序,形象地說,就是將一組數(shù)據(jù)按照從小到大的順序排列時(shí),小的數(shù)據(jù)視為質(zhì)量輕的,大的數(shù)據(jù)視為質(zhì)量沉的。一個(gè)小的數(shù)據(jù)就好比水中的氣泡,往上移動(dòng),一個(gè)較大的數(shù)據(jù)就好比石頭,往下移動(dòng)。顯然最終會(huì)沉到水底,最輕的會(huì)浮到頂,反復(fù)進(jìn)行,直到數(shù)據(jù)列排成為有序列。以上過程反映了這種排序方法的基本思路。我們先對(duì)一組數(shù)據(jù)進(jìn)行分析。設(shè)待排序的數(shù)據(jù)為:49,38,65,97,76,13,27,49排序的具體操作步驟如下:1將第1個(gè)數(shù)與右邊相鄰的數(shù)38進(jìn)行比較,因?yàn)?849,所以順序不變,得到新的數(shù)據(jù)列:38,49,65,97,76,13,27,493將新數(shù)據(jù)列中的第3個(gè)數(shù)65與右邊相鄰的數(shù)97進(jìn)行比較,因?yàn)?765,所以順序不變,得到新的數(shù)據(jù)列:38,49,65,97,76,13,27,494將新數(shù)據(jù)列中的第4個(gè)數(shù)97與右邊相鄰的數(shù)76進(jìn)行比較,因?yàn)?697,97應(yīng)下沉,所以順序不變,得到新的數(shù)據(jù)列:38,49,65, 76,97,13,27,495將新數(shù)據(jù)列中的第5個(gè)數(shù)97與右邊相鄰的數(shù)13進(jìn)行比較,因?yàn)?397,97應(yīng)下沉,所以順序改變,得到新的數(shù)據(jù)列:38,49,65, 76, 13,97,27,496將新數(shù)據(jù)列中的第6個(gè)數(shù)97與右邊相鄰的數(shù)27進(jìn)行比較,因?yàn)?797,97應(yīng)下沉,所以順序改變,得到新的數(shù)據(jù)列:38,49,65, 76, 13,97,27,497將新數(shù)據(jù)列中的第7個(gè)數(shù)97與右邊相鄰的數(shù)49進(jìn)行比較,因?yàn)?997,97應(yīng)下沉,所以順序改變,得到新的數(shù)據(jù)列:38,49,65, 76, 13,97, 49,27我們把上述過程稱為一趟排序。其基本特征是最大的數(shù)據(jù)沉到底,即排在最左邊位置上的數(shù)據(jù)是數(shù)組中最大的數(shù)據(jù)。反復(fù)執(zhí)行上面的步驟,就能完成排序工作,排序過程不會(huì)超過7趟。這種排序的方法稱為冒泡排序。上面的分析具有一般性,如果數(shù)據(jù)列有n個(gè)數(shù)據(jù)組成,至多經(jīng)過n1趟排序,就能完成整個(gè)排序過程。4進(jìn)位制(1)概念進(jìn)位制是一種記數(shù)方式,用有限的數(shù)字在不同的位置表示不同的數(shù)值。可使用數(shù)字符號(hào)的個(gè)數(shù)稱為基數(shù),基數(shù)為n,即可稱n進(jìn)位制,簡(jiǎn)稱n進(jìn)制。現(xiàn)在最常用的是十進(jìn)制,通常使用10個(gè)阿拉伯?dāng)?shù)字09進(jìn)行記數(shù)。對(duì)于任何一個(gè)數(shù),我們可以用不同的進(jìn)位制來表示。比如:十進(jìn)數(shù)57,可以用二進(jìn)制表示為111001,也可以用八進(jìn)制表示為71、用十六進(jìn)制表示為39,它們所代表的數(shù)值都是一樣的。一般地,若k是一個(gè)大于一的整數(shù),那么以k為基數(shù)的k進(jìn)制可以表示為:,而表示各種進(jìn)位制數(shù)一般在數(shù)字右下腳加注來表示,如111001(2)表示二進(jìn)制數(shù),34(5)表示5進(jìn)制數(shù)。(2)進(jìn)位制間的轉(zhuǎn)換關(guān)于進(jìn)位制的轉(zhuǎn)換,教科書上以十進(jìn)制和二進(jìn)制之間的轉(zhuǎn)換為例講解,并推廣到十進(jìn)制和其它進(jìn)制之間的轉(zhuǎn)換。這樣做的原因是,計(jì)算機(jī)是以二進(jìn)制的形式進(jìn)行存儲(chǔ)和計(jì)算數(shù)據(jù)的,而一般我們傳輸給計(jì)算機(jī)的數(shù)據(jù)是十進(jìn)制數(shù)據(jù),因此計(jì)算機(jī)必須先將十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),再處理,顯然運(yùn)算后首次得到的結(jié)果為二進(jìn)制數(shù),同時(shí)計(jì)算機(jī)又把運(yùn)算結(jié)果由二進(jìn)制數(shù)轉(zhuǎn)換成十進(jìn)制數(shù)輸出。非十進(jìn)制數(shù)轉(zhuǎn)換為十進(jìn)制數(shù)比較簡(jiǎn)單,只要計(jì)算下面的式子值即可:第一步:從左到右依次取出k進(jìn)制數(shù)各位上的數(shù)字,乘以相應(yīng)的k的冪,k的冪從n開始取值,每次遞減1,遞減到0,即;第二步:把所得到的乘積加起來,所得的結(jié)果就是相應(yīng)的十進(jìn)制數(shù)。十進(jìn)制數(shù)轉(zhuǎn)換成非十進(jìn)制數(shù)把十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù),教科書上提供了“除2取余法”,我們可以類比得到十進(jìn)制數(shù)轉(zhuǎn)換成k進(jìn)制數(shù)的算法“除k取余法”。非十進(jìn)制之間的轉(zhuǎn)換一個(gè)自然的想法是利用十進(jìn)制作為橋梁。教科書上提供了一個(gè)二進(jìn)制數(shù)據(jù)與16進(jìn)制數(shù)據(jù)之間的互化的方法,也就是先有二進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù),再由十進(jìn)制數(shù)轉(zhuǎn)化成為16進(jìn)制數(shù)。四典例解析題型1:求最大公約數(shù)例1(1)用輾轉(zhuǎn)相除法求123和48的最大公約數(shù)?(2)用更相減損來求80和36的最大公約數(shù)?解析:(1)輾轉(zhuǎn)相除法求最大公約數(shù)的過程如下:(建立帶余除式)12324827 4812721 271216 21363 623+0最后6能被3整除,得123和48的最大公約數(shù)為3。(2)分析:我們將80作為大數(shù),36作為小數(shù),執(zhí)行更相減損術(shù)來求兩數(shù)的最大公約數(shù)。執(zhí)行結(jié)束的準(zhǔn)則是減數(shù)和差相等。更相減損術(shù):因?yàn)?0和36都是偶數(shù),要去公因數(shù)2。802=40,362=18;40和18都是偶數(shù),要去公因數(shù)2。402=20,182=9下面來求20與9的最大公約數(shù),209=11119=292=772=552=332=121=1可得80和36的最大公約數(shù)為221=4。點(diǎn)評(píng):對(duì)比兩種方法控制好算法的結(jié)束,輾轉(zhuǎn)相除法是到達(dá)余數(shù)為0,更相減損術(shù)是到達(dá)減數(shù)和差相等。例2設(shè)計(jì)一個(gè)算法,求出840與1764的最大公因數(shù)。解析:我們已經(jīng)學(xué)習(xí)過了對(duì)自然數(shù)的素因數(shù)分解的方法,下面的算法就是在此基礎(chǔ)上設(shè)計(jì)的。解題思路如下:首先對(duì)兩個(gè)數(shù)進(jìn)行素因數(shù)分解:840=23357,1764=223272,其次,確定兩個(gè)數(shù)的公共素因數(shù):2,3,7。接著確定公共素因數(shù)的指數(shù):對(duì)于公共素因數(shù)2,840中為23,1764中為22,應(yīng)取較少的一個(gè)22,同理可得下面的因數(shù)為3和7。算法步驟:第一步:將840進(jìn)行素?cái)?shù)分解23357;第二步:將1764進(jìn)行素?cái)?shù)分解223272;第三步:確定它們的公共素因數(shù):2,3,7;第四步:確定公共素因數(shù)2,3,7的指數(shù)分別是:2,1,1;第五步:最大公因數(shù)為223171=84。點(diǎn)評(píng):質(zhì)數(shù)是除以外只能被和本身整除的正整數(shù),它應(yīng)該是無限多個(gè),但是目前沒有一個(gè)規(guī)律來確定所有的質(zhì)數(shù)。題型2:秦九韶算法例3(2005北京,14)已知n次多項(xiàng)式,如果在一種算法中,計(jì)算(k2,3,4,n)的值需要k1次乘法,計(jì)算的值共需要9次運(yùn)算(6次乘法,3次加法),那么計(jì)算的值共需要 次運(yùn)算。下面給出一種減少運(yùn)算次數(shù)的算法:(k0, 1,2,n1)利用該算法,計(jì)算的值共需要6次運(yùn)算,計(jì)算的值共需要 次運(yùn)算。答案:65;20。點(diǎn)評(píng):秦九韶算法適用一般的多項(xiàng)式f(x)=anxn+an-1xn-1+.+a1x+a0的求值問題。直接法乘法運(yùn)算的次數(shù)最多可到達(dá),加法最多n次。秦九韶算法通過轉(zhuǎn)化把乘法運(yùn)算的次數(shù)減少到最多n次,加法最多n次。例4已知多項(xiàng)式函數(shù)f(x)=2x55x44x3+3x26x+7,求當(dāng)x=5時(shí)的函數(shù)的值。解析:把多項(xiàng)式變形為:f(x)= 2x55x44x3+3x26x+7=(2x5)x4)x+3)x6)x+7計(jì)算的過程可以列表表示為:多項(xiàng)式x系數(shù)254367運(yùn)算運(yùn)算所得的值10251055402670+變形后x的系數(shù)25211085342677*5最后的系數(shù)2677即為所求的值。算法過程:v0=2v1=255=5v2=554=21v3=215+3=108v4=10856=534v5=5345+7=2677點(diǎn)評(píng):如果多項(xiàng)式函數(shù)中有缺項(xiàng)的話,要以系數(shù)為0的項(xiàng)補(bǔ)齊后再計(jì)算。題型三:排序例4試用兩種排序方法將以下8個(gè)數(shù):7,1,3,12,8,4,9,10。按照從大到小的順序進(jìn)行排序。解析:可以按照直接插入排序和冒泡排序這兩種方法的要求,結(jié)合圖形,分析寫出。直接插入法排序:7 1 3 12 8 4 9 107 1 3 12 8 4 9 107 3 1 12 8 4 9 1012 7 3 1 8 4 9 1012 8 7 3 1 4 9 1012 8 7 4 3 1 9 1012 9 8 7 4 3 1 1012 10 9 8 7 4 3 1 冒泡排序7777777711333333331121212121212121218888888814444444419999999911010101010101010第一趟771212121231288910128791098491088491077791044441033333111111第2趟 第3趟 第4趟 第5趟 第6趟點(diǎn)評(píng):直接插入法和冒泡法排序是常見的排序方法,通過該例,我們對(duì)比可以發(fā)現(xiàn),直接插入排序比冒泡排序更有效一些,執(zhí)行的操作步驟更少一些。例6給出以下四個(gè)數(shù):6,3,0,15,用直接插入法排序?qū)⑺鼈儼磸男〉酱蟮捻樞蚺帕校妹芭莘▽⑺鼈儼磸拇蟮叫〉捻樞蚺帕?。分析:不論從大到小的順序還是按從大到小的順序,都可按兩種方法的步驟進(jìn)行排序。解析:直接插入排序法:6 3 0 153 6 0 153 0 6 153 0 6 15用冒泡排序法排序:66666661515153300015156660031515000001515153333333題型4:進(jìn)位值例7把十進(jìn)制數(shù)89化為三進(jìn)制數(shù),并寫出程序語句.解析:具體的計(jì)算方法如下:89=329+229=39+29=33+03=31+01=30+1所以:89(10)=1011001(3)。點(diǎn)評(píng):根據(jù)三進(jìn)制數(shù)滿三進(jìn)一的原則,可以用3連續(xù)去除89及其所的得的商,然后按倒序的先后順序取出余數(shù)組成數(shù)據(jù)即可。例8將8進(jìn)制數(shù)314706(8)化為十進(jìn)制數(shù),并編寫出一個(gè)實(shí)現(xiàn)算法的程序。解析:314706(8)=385+184+483+782+081+680=104902。所以,化為十進(jìn)制數(shù)是104902。點(diǎn)評(píng):利用把k進(jìn)制數(shù)轉(zhuǎn)化為十進(jìn)制數(shù)的一般方法就可以把8進(jìn)制數(shù)314706(8)化為十進(jìn)制數(shù),然后根據(jù)該算法,利用GET函數(shù),應(yīng)用循環(huán)結(jié)構(gòu)可以設(shè)計(jì)程序。五思維總結(jié)開始輸入:m,nr=m MOD nm=nn=rr=0?輸出: 開始YN1求最大公約數(shù)(1)輾轉(zhuǎn)相除法程序框圖與程序語句程序:INPUT “m,n=”;m,nDOr=m MOD nm=nn=rLOOP UNTIL r=0PRINT END(2)更相減損術(shù)更相減損術(shù)程序:INPUT “請(qǐng)輸入兩個(gè)不相等的正整數(shù)”;a,bi=0WHILE a MOD 2=0 AND b MOD 2=0a=a/2b=b/2i=i+1WENDDOIF bb;(2)ba,這也就用到了我們經(jīng)常提及的分類討論的方式,找出兩個(gè)數(shù)的最大值。解:算法一:第一步:輸入a, b的數(shù)值;開始輸入a,bab?輸出a輸出b結(jié)束YN第二步:判斷a,b的大小關(guān)系,若ab,則輸出a的值,否則輸出b的值。(程序框圖如右圖)程序如下:(“IFTHENELSE”語句)INPUT“a,b”;a,bIF ab THENPRINT aELSEPRINT bEND IFEND算法二:第一步:輸入a,b的數(shù)值;第二步:判斷a,b的大小關(guān)系,若b a,則將b的值賦予a;否則直接執(zhí)行第三步;第三步:輸出a的值,結(jié)束。開始輸入a,bba?輸出a結(jié)束YNa=b(程序框圖如右圖)程序如下:(“IFTHEN”語句)INPUT“a,b”;a,bIF ba THENa=bEND IFPRINT aEND點(diǎn)評(píng):1一個(gè)“好”的算法往往像上面教材例題中的“小技巧”,要熟練、有效的使用它們,則需要在大量的算法設(shè)計(jì)中積累經(jīng)驗(yàn)。我們也可以先根據(jù)自己的思路設(shè)計(jì)算法,再與 “成形”的、高效的、優(yōu)秀的算法比較,改進(jìn)思路,改進(jìn)算法,以避免重復(fù)計(jì)算等問題,提高算法設(shè)計(jì)的水平!2我們?cè)谄匠5挠?xùn)練中盡可能的少引用變量,過多的變量不僅會(huì)使得算法和程序變得復(fù)雜,而且不利于計(jì)算機(jī)的執(zhí)行。為此,我們?cè)诰毩?xí)中要積極思考盡可能少引入變量以及如何才能少引入變量。Y開始輸入xx0?x=0輸出1輸出0輸出0YNN結(jié)束例6高等數(shù)學(xué)中經(jīng)常用到符號(hào)函數(shù),符號(hào)函數(shù)的定義為,試編寫程序輸入x的值,輸出y的值。程序一:(嵌套結(jié)構(gòu))程序框圖:(右圖)程序語言:INPUT xIF x0 THENy=1ELSEIF x=0 THENy=0ELSEy=1END IFEND IFPRINT yEND程序二:(疊加結(jié)構(gòu))Y開始輸入xx0?輸出1YNN結(jié)束x=0?輸出0x0 THENy=1END IFIF x=0 THENy=0END IFIF x0 THENy=1END IFPRINT yEND點(diǎn)評(píng):1條件結(jié)構(gòu)的差異,造成程序執(zhí)行的不同。當(dāng)代入x的數(shù)值時(shí),“程序一”先判斷外層的條件,依次執(zhí)行不同的分支,才有可能判斷內(nèi)層的條件;而“程序二”中執(zhí)行了對(duì)“條件1”的判斷,同時(shí)也對(duì)“條件2”進(jìn)行判斷,是按程序中條件語句的先后依次判斷所有的條件,滿足哪個(gè)條件就執(zhí)行哪個(gè)語句。2條件語句的嵌套可多于兩層,可以表達(dá)算法步驟中的多重限制條件。題型4:循環(huán)語句例7設(shè)計(jì)一個(gè)計(jì)算135799的算法,編寫算法程序。解析:算法如下:第一步:s1;第二步:i3;第三步:ssi;第四步:ii2;第五步:如果i99,那么轉(zhuǎn)到第三步;第六步:輸出s;程序如下:(“WHILE型”循環(huán)語句)s1i3WHILE i99ss*iii2WENDPRINT sEND點(diǎn)評(píng):你能用“UNTIL”型循環(huán)語句表示“典例1”中的程序嗎?例8編寫一個(gè)程序,求1!+2!+10!的值。解析:這個(gè)問題是求前10個(gè)正整數(shù)的階乘之和,可以用“WHILE+ WHILE”循環(huán)嵌套語句格式來實(shí)現(xiàn)。程序結(jié)構(gòu)要做到如下步驟:處理“N!”的值;(注:處理N!值的變量就是一個(gè)內(nèi)循環(huán)變量)累加“N!”的值。(注:累加N!值的變量就是一個(gè)外循環(huán)變量)顯然,通過10次循環(huán)可分別求出1!、2!、10!的值,并同時(shí)累加起來, 可求得S的值。而求T=N!,又可以用一個(gè)循環(huán)(內(nèi)循環(huán))來實(shí)現(xiàn)。程序?yàn)?s=0i=1WHILE i=10j=1t=1WHILE j=it=t*jj=j+1WENDs=s+ti=i+1WENDPRINT sEND上面程序中哪個(gè)變量是內(nèi)循環(huán)變量,哪個(gè)變量是外循環(huán)變量?(1)內(nèi)循環(huán)變量:j,t(2)外循環(huán)變量:s,i“典例2”程序是一個(gè)的“WHILE+WHILE”型循環(huán)嵌套語句格式。這是一個(gè)比較好想的方法,但實(shí)際上對(duì)于求n!,我們也可以根據(jù)求出的(n1)!乘上n即可得到,而無需重新從1再累乘到n。程序可改為:s=0i=1j=1WHILE i=10j=j*is=s+ji=i+1WENDPRINT sEND顯然第二個(gè)程序的效率要比第一個(gè)高得多。第一程序要進(jìn)行1+2+10=55次循環(huán),而第二程序進(jìn)行10次循環(huán)。如題目中求的是1!2!1000!,則兩個(gè)程序的效率區(qū)別更明顯。點(diǎn)評(píng):解決具體的構(gòu)造循環(huán)語句的算法問題,要盡可能的少引入循環(huán)變量,否則較多的變量會(huì)使得設(shè)計(jì)程序比較麻煩,并且較多的變量會(huì)使得計(jì)算機(jī)占用大量的系統(tǒng)資源,致使系統(tǒng)緩慢。另外,也盡可能使得循環(huán)嵌套的層數(shù)少,否則也浪費(fèi)計(jì)算機(jī)的系統(tǒng)資源。題型5:實(shí)際應(yīng)用例9中國網(wǎng)通規(guī)定:撥打市內(nèi)電話時(shí),如果不超過3分鐘,則收取話費(fèi)0.22元;如果通話時(shí)間超過3分鐘,則超出部分按每分鐘0.1元收取通話費(fèi),不足一分鐘按以一分鐘計(jì)算。設(shè)通話時(shí)間為t(分鐘),通話費(fèi)用y(元),如何設(shè)計(jì)一個(gè)程序,計(jì)算通話的費(fèi)用。解析:算法分析:數(shù)學(xué)模型實(shí)際上為:y關(guān)于t的分段函數(shù)。關(guān)系是如下:其中t3表示取不大于t3的整數(shù)部分。算法步驟如下:第一步:輸入通話時(shí)間t;第二步:如果t3,那么y = 0.22;否則判斷tZ 是否成立,若成立執(zhí)行y= 0.2+0.1 (t3);否則執(zhí)行y = 0.2+0.1( t3+1)。第三步:輸出通話費(fèi)用c 。算法程序如下:INPUT “請(qǐng)輸入通話時(shí)間:”;tIF t=3 THENy=0.22ELSEIF INT(t)=t THENy=0.22+0.1*(t3)ELSEy=0.22+0.1*(INT(t3)+1)END IFEND IFPRINT “通話費(fèi)用為:”;yEND點(diǎn)評(píng):實(shí)際應(yīng)用問題,在高考中是一個(gè)熱點(diǎn)。如何將實(shí)際問題轉(zhuǎn)化成數(shù)學(xué)問題是解題的關(guān)鍵,最后還要用算法步驟和程序進(jìn)行表達(dá)。如:中國網(wǎng)通通話費(fèi)的規(guī)定在數(shù)學(xué)中就是通話時(shí)間到通話費(fèi)用的分段函數(shù)。日常生活中的分段函數(shù)問題還有很多:出租車的計(jì)費(fèi)問題、個(gè)人所得稅問題、銀行利率問題等等。例10編寫程序,計(jì)算數(shù)列an的前20項(xiàng)的和。(其中數(shù)列的前幾項(xiàng)分別為1,1,2,3,5,8,)解析:這是“Fibonacci數(shù)列”的典型特征,從第三項(xiàng)起每一項(xiàng)都是它前兩項(xiàng)的和,即。程序如下:a=1b=1s=0i=3WHILE i=20s=s+a+bt=aa=bb=b+ti=i+1WENDPRINT sEND點(diǎn)評(píng):1計(jì)數(shù)變量的作用一般是統(tǒng)計(jì)循環(huán)體執(zhí)行的次數(shù),改變循環(huán)條件的取值,為結(jié)束循環(huán)作準(zhǔn)備。譬如:計(jì)算等差、等比數(shù)列的前n項(xiàng)的和,n就是計(jì)數(shù)變量的臨界值,在當(dāng)型結(jié)構(gòu)中“小于等于n”維持循環(huán),而在直到型循環(huán)結(jié)構(gòu)中“大于n”跳出循環(huán)。2累加變量是最終的輸出結(jié)果。每進(jìn)入一次循環(huán)體隨著計(jì)數(shù)變量改變而改變。累加變量的初始值通常為0。五思維總結(jié)在設(shè)計(jì)算法的過程中,解決問題的基本思想常常很簡(jiǎn)單、
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 開店合同和協(xié)議書
- 江蘇賣房合同協(xié)議書
- 手持合同協(xié)議書拍照
- 露露批發(fā)合同協(xié)議書
- 轉(zhuǎn)讓經(jīng)營合同協(xié)議書
- 生產(chǎn)合同授權(quán)協(xié)議書
- 2025關(guān)于農(nóng)業(yè)土地租賃和農(nóng)產(chǎn)品購買合同范本
- 建筑安全生產(chǎn)試題及答案
- 急救護(hù)理技術(shù)習(xí)題含答案
- 農(nóng)村遠(yuǎn)程技術(shù)服務(wù)外包合同
- 居然之家合同DOC
- 大學(xué)生德育論文范文3000字
- 鋁鎂料倉等施工方案精品
- 目前最準(zhǔn)確的通達(dá)信纏論分筆公式
- 《丑小鴨》教學(xué)設(shè)計(jì)
- 綠化種植施工合同
- 停車場(chǎng)收費(fèi)管理系統(tǒng)使用手冊(cè)
- 我的家鄉(xiāng)寧波
- 脫硫計(jì)算軟件
- 執(zhí)業(yè)醫(yī)師注冊(cè)健康體檢表
- 普通高等學(xué)校畢業(yè)生 畢業(yè)研究生就業(yè)協(xié)議書
評(píng)論
0/150
提交評(píng)論