版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
計算機(jī)程序設(shè)計基礎(chǔ)劉倩email:2課程簡介大學(xué)計算機(jī)基礎(chǔ)計算機(jī)程序設(shè)計基礎(chǔ)3《計算機(jī)程序設(shè)計基礎(chǔ)》是大學(xué)計算機(jī)基礎(chǔ)教學(xué)系列中的核心課程,主要講授程序設(shè)計語言(C++)的基本知識和程序設(shè)計的方法和技術(shù)(數(shù)據(jù)結(jié)構(gòu)與算法基礎(chǔ)等方面的初步內(nèi)容)課程實踐性很強(qiáng),應(yīng)掌握計算機(jī)程序設(shè)計的思想和方法。初步具有在各領(lǐng)域應(yīng)用計算機(jī)的能力,并為后續(xù)課程的學(xué)習(xí)創(chuàng)造條件。課程簡介4學(xué)習(xí)方法做好課前預(yù)習(xí)。利用電子教案做好課后復(fù)習(xí),有問題應(yīng)及時解決。掌握算法,不要死摳語法。學(xué)到實實在在的應(yīng)用技能。本課程是一門實踐性很強(qiáng)的課程,動手越多程序編得越好。多讀源程序、多編寫程序、多上機(jī)調(diào)試(模仿)。忌上課只聽不記、忌“紙上談兵”、忌課下不練習(xí)。5具體要求:1、上課有重點、有選擇的記筆記。2、請準(zhǔn)備一個練習(xí)本,以備隨堂練習(xí)。2、上機(jī)有準(zhǔn)備:準(zhǔn)備好課本、實驗指導(dǎo)書、作業(yè)等。3、認(rèn)真完成老師要求的課后練習(xí),并上機(jī)驗證(建議多做一些計算機(jī)二級考試的模擬題)學(xué)習(xí)方法上機(jī)安排專業(yè):地信、測控上機(jī)時間:3-17周星期四11-12節(jié)上機(jī)地點:X7307專業(yè):土木上機(jī)時間:3-17周星期四11-12節(jié)上機(jī)地點:X7105
6實驗報告要求提前一周布置實驗任務(wù),請在上機(jī)實驗前完成相應(yīng)實驗要求(設(shè)計算法、編寫程序),實驗時驗證程序運行是否正確。每次實驗完成后應(yīng)將本次實驗的相關(guān)內(nèi)容填寫到實驗報告中,實驗報告請命名為“學(xué)號姓名-實驗報告*”的形式,如20140001李四-實驗報告1,完成的所有實驗報告請保存在以“學(xué)號姓名”命名的文件夾中,在規(guī)定時間內(nèi)統(tǒng)一提交給班長,并由班長負(fù)責(zé)交給輔導(dǎo)老師。7第1章緒論計算機(jī)程序設(shè)計基礎(chǔ)9本章內(nèi)容程序程序設(shè)計程序設(shè)計方法算法算法分類及特點算法設(shè)計的主要原則表示算法的方法計算機(jī)算法程序設(shè)計10程序就是讓計算機(jī)完成某項任務(wù)的一系列操作命令的集合。計算機(jī)能夠識別的操作命令即指令程序是指令的集合1.程序設(shè)計1.1程序#include<iostream>usingnamespacestd;voidmain(){doublea,b,ccout<<"Pleaseinputtwonumbera,b";cin>>a>>b;c=a+b;cout<<"a+b="<<c<<endl;}程序示例;C++中分號表示一個語句(命令)1112一個程序應(yīng)包括以下兩方面的內(nèi)容:
(1)
對數(shù)據(jù)的描述。
(2)對操作的描述。1.1程序
#include<iostream>usingnamespacestd;voidmain(){doublea,b,c;cout<<"Pleaseinputtwonumbera,b";cin>>a>>b;c=a+b;cout<<"a+b="<<c<<endl;}對數(shù)據(jù)的描述對數(shù)據(jù)的操作13
一個程序應(yīng)包括以下兩方面的內(nèi)容:
(1)
對數(shù)據(jù)的描述。
(2)對操作的描述。
數(shù)據(jù)是操作的對象,操作的目的是對數(shù)據(jù)進(jìn)行加工處理,以得到期望的結(jié)果。著名的計算機(jī)科學(xué)家NikiklausWirth提出了一個公式:1.1程序程序=數(shù)據(jù)結(jié)構(gòu)+算法即操作步驟,也就是算法。在程序中要指定數(shù)據(jù)的類型和數(shù)據(jù)的組織形式,即數(shù)據(jù)結(jié)構(gòu)。算法設(shè)計是本課程的重點(難點)141.2程序設(shè)計
用計算機(jī)語言為計算機(jī)編寫程序,解決某種問題,稱之為程序設(shè)計。
程序設(shè)計過程主要包括以下幾個階段:1.分析問題2.設(shè)計算法與數(shù)據(jù)結(jié)構(gòu)3.檢查算法4.編碼實現(xiàn)(編程)5.測試和調(diào)試程序15分析問題
通過原始資料,取得對問題的一個清晰的理解,進(jìn)而確定解決問題的目標(biāo)(稱為輸出)以及實現(xiàn)該目標(biāo)所需要的條件(稱為輸入)。程序設(shè)計過程求解一元二次方程。ax2+bx+c=0的根。2.設(shè)計算法與數(shù)據(jù)結(jié)構(gòu)
數(shù)據(jù)結(jié)構(gòu)描述了問題涉及的對象之間的聯(lián)系和組織結(jié)構(gòu);算法描述了求解問題的步驟或規(guī)則。設(shè)計合理的數(shù)據(jù)結(jié)構(gòu)往往可以簡化算法,而好的算法又使程序具有更高的效率。a,b,c為整數(shù),x為實數(shù)163.檢查算法
使用多組樣本數(shù)據(jù),通過手工計算,對算法的正確性進(jìn)行證明和驗證。4.編碼實現(xiàn)
選用一種程序設(shè)計語言(如C++語言)將算法轉(zhuǎn)換成計算機(jī)能夠理解的程序。程序設(shè)計過程175.測試和調(diào)試程序
“測試”是在計算機(jī)上用樣本數(shù)據(jù)運行程序,測試代碼的正確性?!罢{(diào)試”就是查找和排除程序錯誤,直到能夠得到正確的運行結(jié)果為止。
程序中的錯誤可能是語法錯,也可能是邏輯錯誤。大多數(shù)語法錯誤容易找到和改正(編譯),但邏輯錯誤很難找到。程序設(shè)計過程18程序設(shè)計和程序編碼
用某種程序設(shè)計語言編寫代碼,稱為編碼(coding)。
程序設(shè)計一定要在具體的程序編碼之前完成。程序設(shè)計完成的好壞直接影響了后面的編碼質(zhì)量。191.3程序設(shè)計方法程序設(shè)計需要有一定的方法來指導(dǎo),目前,有兩種重要的程序設(shè)計方法:結(jié)構(gòu)化的程序設(shè)計和面向?qū)ο蟮某绦蛟O(shè)計。
1.3.1結(jié)構(gòu)化程序設(shè)計(StructuredProgramming,簡稱SP)
該方法是由E.Dijkstra等人于1972年提出來的,它建立在Bohm、Jacopini證明的結(jié)構(gòu)定理的基礎(chǔ)上。結(jié)構(gòu)定理指出:任何程序邏輯都可以用順序、選擇和循環(huán)等三種基本結(jié)構(gòu)來表示。20三種基本控制結(jié)構(gòu)順序結(jié)構(gòu)AB選擇結(jié)構(gòu)ABP循環(huán)結(jié)構(gòu)AP21
用SP方法設(shè)計的程序只存在三種基本結(jié)構(gòu),程序代碼的空間順序和程序執(zhí)行的時間順序基本一致,程序結(jié)構(gòu)清晰。結(jié)構(gòu)化的程序設(shè)計仍然是廣泛使用的一種程序設(shè)計方法。1.3.1結(jié)構(gòu)化程序設(shè)計方法22結(jié)構(gòu)化程序設(shè)計方法的設(shè)計思路
自頂向下、逐步求精。“自頂向下”
是將復(fù)雜、大的問題劃分為小問題,找出問題的關(guān)鍵、重點所在,然后用精確的思維定性、定量地去描述問題?!爸鸩角缶?/p>
復(fù)雜問題經(jīng)抽象化處理變?yōu)橄鄬Ρ容^簡單的問題。經(jīng)若干步抽象(精化)處理,最后到求解域中只是比較簡單的編程問題。23示例學(xué)生信息管理系統(tǒng)系統(tǒng)管理數(shù)據(jù)管理系統(tǒng)幫助退出系統(tǒng)修改密碼添加用戶刪除用戶學(xué)生登記學(xué)生查詢檔案管理按姓名查詢按專業(yè)查詢按宿舍查詢關(guān)于241.3.2面向?qū)ο蟮某绦蛟O(shè)計
面向?qū)ο蟮某绦蛟O(shè)計是另一種重要的程序設(shè)計方法。面向?qū)ο蟮某绦蛟O(shè)計方法認(rèn)為現(xiàn)實世界是由對象組成的。面向?qū)ο蟮某绦蛟O(shè)計方法解決某個問題,首先要確定這個問題是由哪些對象組成的。
25面向?qū)ο蟮母拍顚傩裕褐笇ο笠阎臓顟B(tài)。方法:指對象的行為或動作,即對象可以執(zhí)行的操作。
對象包括兩個因素:一是數(shù)據(jù)(屬性);二是需要進(jìn)行的操作(方法)。對象就是一個包含數(shù)據(jù)以及與這些數(shù)據(jù)有關(guān)的操作的集合。26面向?qū)ο蟮母拍睢惉F(xiàn)實生活中的對象可以將現(xiàn)實生活中的對象經(jīng)過抽象,映射為程序中的對象。對象在程序中是通過類(class)來描述的。class
Car{intcolor_number;intdoor_number;intspeed;
voidbrake(){…}voidspeedUp(){…}voidslowDown(){…}}
屬性(數(shù)據(jù))方法(操作)27面向?qū)ο蟮母拍睢愵惔砹艘慌鷮ο蟮墓残院吞卣?。類是對象的抽象,而對象是類的具體實例。Carcar1;Carcar2;…
…CarcarN;……28
下課了。。。休息一會兒……..實踐探索2.計算機(jī)算法算法解決某類具體問題的方法和步驟。計算機(jī)算法利用計算機(jī)解決某類問題的方法和步驟2.1算法基本概念292.2計算機(jī)算法的分類數(shù)值算法求數(shù)值解,例如求方程的根,求一個函數(shù)的定積分等。非數(shù)值算法
包括的面十分廣泛,最常見的是事務(wù)管理領(lǐng)域,例如圖書檢索、人事管理、行車調(diào)度管理等。302.3算法的特征一個算法應(yīng)具的五個重要特征有窮性
總是可以在執(zhí)行有限步有限的時間內(nèi)完成確定性每條指令要有確切的含義,對于相同的輸入只能得出相同的結(jié)果可行性算法中描述的所有操作都可通過已經(jīng)實現(xiàn)的基本運算執(zhí)行有限次來實現(xiàn)輸入一個算法可有零個或多個輸入輸出一個算法可以有一個或多個輸出。任何一個算法至少應(yīng)有一個輸出312.4算法設(shè)計的主要原則正確性算法應(yīng)滿足具體問題的要求;可讀性一個可讀性好的算法有助于對算法的理解,易于調(diào)試和修改;健壯性當(dāng)輸入非法數(shù)據(jù)時,算法也能夠作出適當(dāng)?shù)姆从郴蛱幚恚粫a(chǎn)生一些莫名其妙的結(jié)果,更不會出現(xiàn)死機(jī)、系統(tǒng)崩潰等情況;高效性算法的效率與算法占用計算機(jī)設(shè)備資源成反比,而最突出的就是計算機(jī)的運行時間和計算機(jī)的存儲空間。占用時間越短效率越高,占用內(nèi)存空間越少效率越高。322.5表示算法的方法表示算法可用不同的方法:自然語言傳統(tǒng)流程圖結(jié)構(gòu)化流程圖(N-S流程圖)偽代碼332.5.1用自然語言表示算法自然語言是人們?nèi)粘J褂玫恼Z言,用自然語言表示算法通俗易懂;但文字冗長,含義往往不太嚴(yán)格,容易出現(xiàn)“歧義性”,要根據(jù)上下文才能判斷其正確含義。而且用自然語言來描述包含分支和循環(huán)的算法,很不方便。因此,除了一些簡單的問題外,一般不用自然語言描述算法。34示例:一元二次方程求根S1:計算方程的判別式△=b2-4acS2:如判別式小于零,則輸出方程沒有實根的信息S3:否則,計算方程的實根,并輸出計算結(jié)果。35S1:先求1×2,得到結(jié)果2。S2:將S1得到的積2再乘以3,得到結(jié)果6。S3:將6再乘以4,得24。S4:將24乘以5,得120。示例:計算5!分析:
5!=1×2×3×4×5
思考如何計算n!?36示例:計算n!5!=1×2×3×4×5
積(2)積(6)積(24)積(120)反復(fù)(循環(huán))求積?、佗冖邰軐⒚恳徊降某朔e放在變量t(存儲空間)中,讓其作為被乘數(shù);另設(shè)一個變量i,作為乘數(shù),乘數(shù)每次加1。被乘數(shù)t的初始值為1,乘數(shù)i的初始值為1。輸入n的值。積(中間結(jié)果)t變量(內(nèi)存)37示例:計算n!設(shè)t為被乘數(shù),i為乘數(shù)
S1:輸入n值
S2:將1t(表示賦值,注意雙線箭頭方向)S3:將1iS4:將t×itS5:將i+1iS6:若i
n成立,返回重新執(zhí)行S4,以及其后的步驟S5、S6;否則執(zhí)行S7S7:輸出t,算法結(jié)束如何理解?如果要求累加和,如1+2+3+…+n,該如何修改算法?S2:將0
s
S4:將s+is38課后練習(xí)請認(rèn)真閱讀課件《怎樣學(xué)習(xí)C++程序設(shè)計》請認(rèn)真預(yù)習(xí)“實驗一”的相關(guān)資料,為第一次實驗做好充分準(zhǔn)備請用自然語言描述下列問題的算法計算1!+2!+3!+……+n!39問題:對一個大于或等于3的正整數(shù),判斷它是不是一個素數(shù)。所謂素數(shù)(質(zhì)數(shù)),是指除了1和該數(shù)本身外不能被其他任何整數(shù)整除的數(shù)。示例:素數(shù)問題判斷一個數(shù)n(n≥3)是否為素數(shù)的算法描述:將n作為被除數(shù),將2到(n-1)之間的各個整數(shù)輪流作為除數(shù)去除以n,如果都不能被整除,則n為素數(shù)。循環(huán)如何判斷一個數(shù)能被另一數(shù)整除?設(shè)置變量n作為被除數(shù)設(shè)置變量i作為除數(shù),i的取值從2變化到n-1設(shè)置變量r,r為余數(shù),如果r=0,則除盡40S1:輸入n的值(n是需要判斷的數(shù),作為被除數(shù))S2:2i(i為除數(shù),初值為2)S3:n/i的余數(shù)r(變量r保存余數(shù))S4:如果r=0,則打印n“不是素數(shù)”,算法結(jié)束,否則執(zhí)行S5。S5:i+1iS6:如果in-1,返回重新執(zhí)行S3,以及其后的步驟;否則執(zhí)行S7。S7:打印n“是素數(shù)”,算法結(jié)束。示例:素數(shù)問題為什么?41分析問題假定n不是素數(shù),則可表示為:也就是說,如果n不是素數(shù),一定能找到一個整數(shù)i能整除n,于是,n不必被2到n-1之間的整數(shù)除,只需被2到之間或2到n/2之間的整數(shù)除即可。S6步驟可改為:S6:如果i≤(或n/2),返回重新執(zhí)行S3,以及其后的步驟;否則執(zhí)行S7。S7:打印n“是素數(shù)”,算法結(jié)束。42修改后的算法描述S1:輸入n的值S2:2iS3:n/i的余數(shù)rS4:如果r=0,則打印n“不是素數(shù)”,算法結(jié)束,否則執(zhí)行S5。S5:i+1iS6:如果i≤(或n/2),返回重新執(zhí)行S3,以及其后的步驟;否則執(zhí)行S7。S7:打印n“是素數(shù)”,算法結(jié)束。432.傳統(tǒng)流程圖P6流程圖是用一些圖框表示各種類型的操作用圖形表示算法,直觀形象,易于理解。
美國國家標(biāo)準(zhǔn)化協(xié)會ANSI(AmericanNationalStandardInstitute)規(guī)定了一些常用的流程圖符號。起止框輸入輸出框判斷框處理框聯(lián)結(jié)點注釋框或流程線44所有的計算機(jī)程序都是三種基本結(jié)構(gòu)組合而成:順序結(jié)構(gòu)、選擇結(jié)構(gòu)、循環(huán)結(jié)構(gòu)。
結(jié)構(gòu)化流程圖表示P7順序結(jié)構(gòu)AB選擇結(jié)構(gòu)ABP循環(huán)結(jié)構(gòu)AP45三種基本結(jié)構(gòu)的特點以上三種基本結(jié)構(gòu),有以下共同點:
只有一個入口;只有一個出口;結(jié)構(gòu)內(nèi)的每一部分都有機(jī)會被執(zhí)行;
結(jié)構(gòu)內(nèi)不存在“死循環(huán)”。順序結(jié)構(gòu)AB選擇結(jié)構(gòu)ABP循環(huán)結(jié)構(gòu)AP46順序結(jié)構(gòu)AB程序流程:按語句出現(xiàn)的先后順序依次執(zhí)行。用途:解決順序性的計算或處理問題。47選擇結(jié)構(gòu)程序流程:先做判斷,根據(jù)判斷做出選擇。用途:當(dāng)需要程序基于選擇或比較的結(jié)果選擇兩條路徑中的一條時,可以使用選擇結(jié)構(gòu)或稱為決策結(jié)構(gòu)。PB成立不成立abAP成立不成立abA48循環(huán)結(jié)構(gòu)用途:需要重復(fù)執(zhí)行的過程用此結(jié)構(gòu),可使算法容易編寫,且結(jié)構(gòu)清晰。直到型循環(huán)P成立不成立abA當(dāng)型循環(huán)PA成立不成立ab49循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)從a點(入口)進(jìn)入,首先對給出的條件P進(jìn)行判斷,如果P成立,則執(zhí)行A操作;執(zhí)行完A操作后重新對條件P進(jìn)行判斷,如果P仍然成立,再次執(zhí)行A操作;如此反復(fù)“判斷→執(zhí)行”,直到條件P不成立為止,最后從b點(出口)脫離該結(jié)構(gòu)。當(dāng)型循環(huán)PA成立不成立ab50循環(huán)結(jié)構(gòu)直到型循環(huán)從a點(入口)進(jìn)入,首先執(zhí)行A操作,然后對給出的條件P進(jìn)行判斷,如果P不成立,則執(zhí)行A操作;執(zhí)行完A操作后重新對條件P進(jìn)行判斷,如果P仍然不成立,再次執(zhí)行A操作;如此反復(fù)“判斷→執(zhí)行”,直到條件P成立為止,最后從b點(出口)脫離該結(jié)構(gòu)。直到型循環(huán)P成立不成立abA51循環(huán)結(jié)構(gòu)當(dāng)型循環(huán)是先判斷后循環(huán);直到型循環(huán)是先執(zhí)行一次循環(huán)體(至少執(zhí)行一次),然后再判斷是否繼續(xù)循環(huán)。當(dāng)型循環(huán)是在條件滿足時才執(zhí)行循環(huán)體,而直到型循環(huán)是在條件不滿足時才執(zhí)行循環(huán)體.因此在掌握使用這兩種循環(huán)時必須抓住這兩條區(qū)別。當(dāng)型循環(huán)和直到型循環(huán)是可以互相轉(zhuǎn)換的,凡用當(dāng)型循環(huán)處理的問題,用直到型循環(huán)可解決,反之亦然。當(dāng)型循環(huán)PA成立不成立ab直到型循環(huán)P成立不成立abA52示例問題:傳統(tǒng)流程圖描述求5!的算法。5!=1×2×3×4×5
53傳統(tǒng)流程圖設(shè)t為被乘數(shù),i為乘數(shù)
S1:將1tS2:將1iS3:將t×itS4:將i+1iS5:若i
5成立,返回重新執(zhí)行S3,以及其后的步驟S4、S5;否則執(zhí)行S6S6:輸出t,算法結(jié)束1
t開始1ii>5t×iti+1i輸出t成立不成立結(jié)束自然語言描述若i>5不成立,直到型循環(huán)循環(huán)結(jié)構(gòu)54傳統(tǒng)流程圖
直到型循環(huán)1
t開始1ii>5t×iti+1i輸出t成立不成立結(jié)束1
t開始1it×iti+1i輸出t結(jié)束當(dāng)型循環(huán)i<=5成立不成立55傳統(tǒng)流程圖N開始輸入n2in/i的余數(shù)rr=0?Ni+1ii>
Y打印“是素數(shù)”Y打印“不是素數(shù)”結(jié)束課堂練習(xí):素數(shù)問題自然語言描述S1:輸入n的值S2:2iS3:n/i的余數(shù)rS4:如果r=0,則打印n“不是素數(shù)”,算法結(jié)束,否則執(zhí)行S5。S5:i+1iS6:如果i≤(或n/2)成立,返回重新執(zhí)行S3,以及其后的步驟;否則執(zhí)行S7。S7:打印n“是素數(shù)”,算法結(jié)束。56流程圖N開始輸入n2in/i的余數(shù)rr=0?Ni+1ii>
Y打印“是素數(shù)”Y打印“不是素數(shù)”結(jié)束i<=N不是素數(shù)n是素數(shù)YN結(jié)束2ii<=n/i的余數(shù)r=0?i+1iYNNY開始輸入n請問流程圖有幾條結(jié)束路徑?改成“當(dāng)型循環(huán)”結(jié)構(gòu)此時i的值?此時i的值?573.N-S流程圖1971年由兩位美國學(xué)者I.Nassi和B.Shneiderman提出了一種新的流程圖形式,這種流程圖完全去掉了帶箭頭的流程線,稱為N-S流程圖。AB順序結(jié)構(gòu)ABP不成立成立選擇結(jié)構(gòu)A當(dāng)PA直到P循環(huán)結(jié)構(gòu)58用N-S流程圖表示求5!的算法1t1ii>5輸出tt×iti+1i直到型循環(huán)1
t開始1ii>5t×iti+1i輸出t成立不成立結(jié)束59用N-S流程圖表示判斷素數(shù)的算法傳統(tǒng)流程圖N開始輸入n2in/i的余數(shù)rr=0?Ni+1ii>
Y打印“是素數(shù)”Y打印“不是素數(shù)”結(jié)束輸入nn%ir2i
打印“是素數(shù)”當(dāng)i>
r=0?Y打印“不是素數(shù)”,并退出循環(huán)Ni+1iN-S流程圖%為取余運算,求n/i的余數(shù)60課堂練習(xí)1.請將求的算法用傳統(tǒng)流程圖表示出來觀察表達(dá)式與累加求和1+2+…+100的聯(lián)系每項為倒數(shù),運算符號為“+”、“-”交替出現(xiàn)。如何表示倒數(shù)?如何表示交替出現(xiàn)的加減符號?1/i1sign;sign*(-1)sign(1/i)*signterm開始0sum1ii+1ii>100N輸出sum結(jié)束Ysum+isum1sign(-1)*signsignsign*(1/i)termsum+termsum61課堂練習(xí)1.請將求的算法用N-S流程圖表示出來0sum1i1signsign*(1/i)termsum+termsum(-1)*signsigni+1i
輸出sumi>100開始0sum1i1sign(-1)*signsignsign*(1/i)termsum+termsumi+1ii>100N輸出sum結(jié)束Y624.偽代碼
偽代碼是用介于自然語言與計算機(jī)語言之間的文字和符號來描述算法。自上而下地書寫,每一行(或幾行)表示一個基本操作。因此書寫方便,格式緊湊,也比較好懂也便于向計算機(jī)高級語言。
inputni←2whilei≤dor←n/i的余數(shù)ifr=0
thenbreak
elsei←i+1
ifi>
thenprint“是素數(shù)”
elseprint“非素數(shù)”素數(shù)問題的算法偽代碼631.7算法設(shè)計策略(自學(xué)P9~11)算法的設(shè)計策略就是算法設(shè)計中運用的科學(xué)思維方法。枚舉法遞推法遞歸法分治法64枚舉法枚舉法也稱為窮舉法,其設(shè)計思想是:在有限的范圍中,列舉和檢驗所有可能的結(jié)果,從中找出那些符合要求的候選解作為問題的解。問題:設(shè)有算式ABCD-CDC=ABC,其中的A、B、C、D均為一位非負(fù)整數(shù),要求找出A、B、C、D各值。
思路分析:設(shè)正整數(shù)A、B、C、D,A和C的取值范圍應(yīng)是[1,9],B和D的取值范圍應(yīng)是[0,9],分別對相應(yīng)范圍中的每一個數(shù)值進(jìn)行檢測,輸出滿足條件(1000×A+100×B+10×C+D)-(100×C+10×D+C)=(100×A+10×B+C)的數(shù)值。65遞推法
遞推法的設(shè)計思想是:利用問題本身所具有的一種遞推關(guān)系求問題的解,即從已求得的規(guī)模為1,2,…,n-1的一系列解,構(gòu)造出問題規(guī)模為n的解。問題:計算n!思路分析:1!=1,由1!×2得2!→由2!×3得3!→…由(n-1)!×n得n!。66遞歸法
遞歸法的設(shè)計思想是:為求解規(guī)模較大的問題,設(shè)法將它分解成規(guī)模較小的問題,然后從這些小問題的解方便地構(gòu)造出大問題的解,并且這些規(guī)模較小的問題也能采用同樣的分解和綜合方法,分解成規(guī)模更小的問題,并從這些更小問題的解構(gòu)造出規(guī)模較大問題的解。特別地,當(dāng)規(guī)模N=1時,能直接得解(結(jié)束遞歸的條件)。問題:計算斐波那契(Fibonacci)數(shù)列的第n項函數(shù)fib(n)。斐波那契數(shù)列為:1,1,2,3,5,8,13,……67遞歸法思路分析:f(n)=f(n-1)+f(n-2)(n>1),f(0)=f(1)=1遞歸法的執(zhí)行過程分遞推和回歸兩個階段。在遞推階段,把復(fù)雜問題的求解遞推到較簡單問題的求解。例如,計算fib(n)→計算fib(n-1)和fib(n-2)→計算fib(n-3
溫馨提示
- 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度商鋪租賃與租賃保證金繳納流程合同4篇
- 2025年度場海參產(chǎn)品冷鏈物流設(shè)備采購及租賃合同4篇
- 2025版路基施工安全生產(chǎn)監(jiān)督管理合同示范4篇
- 專享足療服務(wù)人員工作協(xié)議(2024年度)版
- 二零二五年文化傳媒產(chǎn)業(yè)融資咨詢協(xié)議2篇
- 2024版股權(quán)比例調(diào)整合同
- 二零二五年度線下門店限時折扣合同樣本4篇
- 2025年度爐窯拆除項目承包及配套設(shè)備供應(yīng)合同4篇
- 2025年度魯0832執(zhí)恢255號網(wǎng)絡(luò)安全風(fēng)險評估與整改服務(wù)合同4篇
- Unit 1 Festivals and celebrations Reading and thinking 說課稿 -2024-2025學(xué)年人教版(2019)高中英語必修第三冊
- GB/T 33629-2024風(fēng)能發(fā)電系統(tǒng)雷電防護(hù)
- 國際森林日森林防火教育宣傳主題班會PPT模板
- 藥廠質(zhì)量管理部QA人員崗位設(shè)置表
- 劍橋國際少兒英語“第三級”單詞默寫表
- (精心整理)高中生物必修二非選擇題專題訓(xùn)練
- 小學(xué)二年級100以內(nèi)進(jìn)退位加減法混合運算
- 福建省流動人口信息登記表
- 市委組織部副部長任職表態(tài)發(fā)言
- HXD1D客運電力機(jī)車轉(zhuǎn)向架培訓(xùn)教材
- 超星爾雅學(xué)習(xí)通【西方文論原典導(dǎo)讀(吉林大學(xué))】章節(jié)測試附答案
- 【培訓(xùn)教材】外貿(mào)會計PPT
評論
0/150
提交評論