版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、計(jì)算概論(Introduction to Computing )、發(fā)表者:馬思偉北京大學(xué)數(shù)字媒體研究所,第13屆函數(shù)和結(jié)構(gòu)化設(shè)計(jì)(2),函數(shù)的定義,函數(shù)的定義:返回值型函數(shù)名(參數(shù)1型參數(shù)名1,參數(shù)2型參數(shù)名2,)文1; /語句可能與參數(shù)關(guān)聯(lián)語句2 /語句可能與參數(shù)關(guān)聯(lián)如果 return返回值/返回值類型為void,則不返回語句,或者返回值為null,則是函數(shù)的說明和函數(shù)主體,int multiple(int x,innt void main() int a=0,b=0; scanf(“%d %d”、/函數(shù)調(diào)用、函數(shù)說明和函數(shù)體、int multiple(int x,int y ); /函數(shù)為
2、void main() int a=0,b=0; 掃描(“% d % d”,錯(cuò)誤! int multiple(int x,int y) /函數(shù)是void main() int a=0,b=0; scanf(“%d %d”、形式參數(shù)和實(shí)際參數(shù)、形式參數(shù)定義函數(shù)時(shí),當(dāng)函數(shù)名后括號(hào)內(nèi)的變量名實(shí)際參數(shù)調(diào)用函數(shù)時(shí),函數(shù)名后括號(hào)內(nèi)的參數(shù)包括常數(shù)、變量、表達(dá)式int max(int x,int y ); void main() int a、b、c; scanf(“%d,%d, )、函數(shù)、全局變量和局部變量的范圍遞歸調(diào)用分為全局變量、與局部變量的定義區(qū)別的簡(jiǎn)單函數(shù)遞歸調(diào)用方法、全局變量和局部變量、變量分為全局
3、變量和局部變量局部變量(內(nèi)部變量):在函數(shù)中定義的變量。 此變量?jī)H在此函數(shù)內(nèi)使用全局變量(外部變量)。 在函數(shù)以外定義的變量可以與此文件中的其他函數(shù)共享。 全局變量和局部變量,#include int total; int tryit(int a) if(a100 ),int main() int n,j; 總值=0; for (j=0; j100; j ) scanf(“%d”、全局和局部變量、局部變量(內(nèi)部變量):在函數(shù)中定義的變量,此變量?jī)H在該函數(shù)中使用。 可以在不同函數(shù)中使用相同名稱的變量格式參數(shù)也是局部變量。復(fù)合語句中的變量?jī)H在本復(fù)合語句中有效,復(fù)合語句結(jié)束時(shí)釋放內(nèi)存,局部變量# i
4、ncludeintcalculate (inta ) intb; if (a=0) b=2*a; if (a=100) b=3*a; if (a=200) b=a*a; 返回b; ,#include int main() int n,j; for (j=0; PS? a:b; return (c )是否最后輸出結(jié)果? 函數(shù)、全局變量和局部變量的范圍遞歸調(diào)用是與全局變量、局部變量的定義區(qū)分開來的簡(jiǎn)單函數(shù)遞歸調(diào)用方法、變量的范圍、 變量范圍變量有效的區(qū)域全局變量:整個(gè)程序有效的局部變量函數(shù)內(nèi)部定義:函數(shù)復(fù)合語句內(nèi):復(fù)合語句范圍函數(shù)之間的變量:定義是程序的結(jié)束,變量的范圍函數(shù)、值傳遞和地址傳遞的全局
5、變量和局部變量的掌握全局變量、定義和區(qū)別局部變量是簡(jiǎn)單的函數(shù)遞歸調(diào)用方法、遞歸調(diào)用、遞歸調(diào)用的形式是函數(shù)本身int f (int x) int f1 (int x) int y,z; int y,z; z=f(y) z=f2(f1(y ) ); return(2*z) return (2*z) 以上的調(diào)用都是無終止調(diào)用,需要控制條件,在條件滿足時(shí)終止調(diào)用,遞歸調(diào)用問題的例子: 5人坐在一起,第5人幾歲,他比第4人大2歲,第4人3 形式化描述:函數(shù)age (n ) :如果返回第n個(gè)人到了幾歲,則age(n)=age(n-1) 2; 在n=1的情況下,age(n)=10; 入口age (入口n )
6、 if (n=1)返回10; 剩馀返回(age (n-1 )2) 、age(5)、age(4) 2、age(3) 2、age (2)、age(1) 2、age(1)、輸出age(5)、n=5、n=4、n=3、n=2、n=n=n*(n-1 )! f (n )=n * f (n-1 ) int fac (intn ) if (n=1|n=0)返回1; else返回(n * fac (n-1 ) ); 、遞歸調(diào)用、斐波那契序列1、1、2、3、5、8、13、 int main() int result=0; int m=5; result=f(m) printf(“%d”,result; 返回0; 、
7、intf (intn ) if (n=1|n=2)返回1; 電子返回(f (n-1 ) f (n-2 ) ); 、遞歸呼叫,Hannoi塔問題,a,b,c,遞歸呼叫,a,b,c,a,b,c,ac,ab,cb c,c,什么?abc,n-1 ACB,n-1 BAC,遞歸調(diào)用,void hanoi (int n,char one,char two,char three) void move(char x,char y ); if (n=1)移動(dòng)電子郵件(n-1,one,three,two ); 移動(dòng)(一個(gè),一個(gè),一個(gè)) 移動(dòng)(一個(gè),一個(gè),一個(gè)) 。 的雙曲正切值。 的雙曲正切值。 的雙曲正切值。 ,
8、應(yīng)用程序,例如:假幣稱量12枚硬幣。 其中11張是真幣,1張是假幣,假幣和真幣只是重量不同,但不知道重量。 只聽三次就知道偽鈔,知道重量。 如何測(cè)量解題是稱量方法、應(yīng)用程序、解題構(gòu)想1 .假說:假設(shè)A-L是偽鈔,輕,假設(shè)A-L是重,驗(yàn)證結(jié)果是否矛盾,矛盾則假說不成立,否則假說成立。2 .排除法:根據(jù)結(jié)果排除: (1)有的時(shí)候,如果平衡,所有硬幣都是真的(2)有的時(shí)候,結(jié)果稱為右端重或左端重,天平上沒有的是真幣(3)與真幣相比判斷重量,應(yīng)用程序,例如假幣稱量12枚硬幣,其假幣和真幣只是重量不同,但不知道重量,只要問三次就能知道假幣,如何測(cè)量,ABCD EFGH even /都有真幣ABCI EF
9、JK up /假幣,但不重量輕,是哪個(gè)abij efgh eve k是假幣,k是輕的其他情況下,例子2次測(cè)定的情況下ABCI EFJK evenL是假幣,再一次L ABCI EFJK down和up的情況下,處理第三次測(cè)定的情況下ABIJ EFGH up I是假幣,重ABIJ EFGH downJ是假幣,輕的應(yīng)用程序假券稱量12枚硬幣,其中11枚是真券,1枚假券,假券和真券只是重量不同,但不知道重量,只要問三次就能知道假券的重量,應(yīng)該怎么測(cè)量呢? 不知道重量,哪個(gè)ABIJ EFGH even /I,j是真券,k是假券,然后k輕的例子第一次的測(cè)定狀況ABCD EFGH up第一次的測(cè)定-AIJK
10、 BCDH even EFG有假幣,輕的,EFG一對(duì)一就行- AIJK BCDH up A, 其中一對(duì)與真幣比較一次-AIJK BCDH downBCD有假幣,很重,取一對(duì)進(jìn)行一次測(cè)量,適用應(yīng)用程序的例子:假幣稱量了12枚硬幣。 其中11張是真幣,1張是假幣,假幣和真幣只是重量不同,但不知道重量。 只要聽到三次就能知道假鈔,如何測(cè)量它的重量。 假說: A-L表示12枚硬幣,依次假設(shè)A-L為假幣,每次檢查是否與假設(shè)的結(jié)果矛盾,如果矛盾假設(shè)不成立,則程序解法: 3個(gè)狀態(tài)上升,下降(記載右端的狀態(tài))應(yīng)用程序定義變量,稱量3次。 如果與條件不矛盾,則輸出結(jié)論為一枚一枚的銀幣較輕,如果與條件不矛盾,則輸
11、出結(jié)論記為重/輕的銀幣位于某個(gè)稱量的左端,下一個(gè)稱量為down,假設(shè)重/輕的銀幣位于某個(gè)稱量的右端,則輸出結(jié)論記為up記,則輸出結(jié)論記為重此稱量為事件,應(yīng)用程序,給定的結(jié)果為1 abcdefgh事件,應(yīng)用程序,#include #include char l37,r37,state310; 輸入檢查(char c,int n ) 輸入I,左,右; for (i=0; iright )、應(yīng)用程序、Check函數(shù)的返回值1 :稱量結(jié)果成立0 :稱量結(jié)果矛盾1 :重; -1:光if (條紋(l I )、c) left=n; 應(yīng)用程序,int main () int n,I,j; char c; 掃描(“% d”、for(c=a”; c=l,c ) if (檢查(c,1 ) )打印(“% cisthecounterfeitcoinanditiseheavy. n”,c ); if(check(c,-1)打印
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 護(hù)理質(zhì)量標(biāo)準(zhǔn)與評(píng)估體系
- 機(jī)房防火安全培訓(xùn)內(nèi)容課件
- 新患者安全管理與風(fēng)險(xiǎn)防范
- 護(hù)理專業(yè)說課視頻集
- 清晰胸部護(hù)理課件圖片
- 醫(yī)患關(guān)系道德沖突解析
- 梅山街道消防安全管理
- 機(jī)場(chǎng)不安全事件培訓(xùn)課件
- 物流橫向發(fā)展路徑
- 電廠秋季安全指南講解
- 2021-2022學(xué)年天津市濱海新區(qū)九年級(jí)上學(xué)期物理期末試題及答案
- 江蘇省蘇州市、南京市九校2025-2026學(xué)年高三上學(xué)期一輪復(fù)習(xí)學(xué)情聯(lián)合調(diào)研數(shù)學(xué)試題(解析版)
- 2026年中國醫(yī)學(xué)科學(xué)院醫(yī)學(xué)實(shí)驗(yàn)動(dòng)物研究所第三批公開招聘工作人員備考題庫及答案詳解一套
- 國家開放大學(xué)《Python語言基礎(chǔ)》形考任務(wù)4答案
- (自2026年1月1日起施行)《增值稅法實(shí)施條例》重點(diǎn)解讀
- 2026年護(hù)理部工作計(jì)劃
- 人教A版高中數(shù)學(xué)選擇性必修第二冊(cè)全冊(cè)各章節(jié)課時(shí)練習(xí)題含答案解析(第四章數(shù)列、第五章一元函數(shù)的導(dǎo)數(shù)及其應(yīng)用)
- 國開電大公共行政學(xué)形考任務(wù)二答案
- 六年級(jí)下冊(cè)小升初全復(fù)習(xí)-第12講 工程問題-北師大 (含答案)
- 某項(xiàng)目盤扣式滿堂腳手架搭設(shè)施工方案
- 食管癌影像學(xué)表現(xiàn)及TNM分期課件
評(píng)論
0/150
提交評(píng)論