




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、計算概論(Introduction to Computing )、發(fā)表者:馬思偉北京大學(xué)數(shù)字媒體研究所,第13屆函數(shù)和結(jié)構(gòu)化設(shè)計(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”,錯誤! int multiple(int x,int y) /函數(shù)是void main() int a=0,b=0; scanf(“%d %d”、形式參數(shù)和實(shí)際參數(shù)、形式參數(shù)定義函數(shù)時,當(dāng)函數(shù)名后括號內(nèi)的變量名實(shí)際參數(shù)調(diào)用函數(shù)時,函數(shù)名后括號內(nèi)的參數(shù)包括常數(shù)、變量、表達(dá)式int max(int x,int y ); void main() int a、b、c; scanf(“%d,%d, )、函數(shù)、全局變量和局部變量的范圍遞歸調(diào)用分為全局變量、與局部變量的定義區(qū)別的簡單函數(shù)遞歸調(diào)用方法、全局變量和局部變量、變量分為全局
3、變量和局部變量局部變量(內(nèi)部變量):在函數(shù)中定義的變量。 此變量僅在此函數(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ù)中定義的變量,此變量僅在該函數(shù)中使用。 可以在不同函數(shù)中使用相同名稱的變量格式參數(shù)也是局部變量。復(fù)合語句中的變量僅在本復(fù)合語句中有效,復(fù)合語句結(jié)束時釋放內(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ū)分開來的簡單函數(shù)遞歸調(diào)用方法、變量的范圍、 變量范圍變量有效的區(qū)域全局變量:整個程序有效的局部變量函數(shù)內(nèi)部定義:函數(shù)復(fù)合語句內(nèi):復(fù)合語句范圍函數(shù)之間的變量:定義是程序的結(jié)束,變量的范圍函數(shù)、值傳遞和地址傳遞的全局
5、變量和局部變量的掌握全局變量、定義和區(qū)別局部變量是簡單的函數(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)用,需要控制條件,在條件滿足時終止調(diào)用,遞歸調(diào)用問題的例子: 5人坐在一起,第5人幾歲,他比第4人大2歲,第4人3 形式化描述:函數(shù)age (n ) :如果返回第n個人到了幾歲,則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)移動電子郵件(n-1,one,three,two ); 移動(一個,一個,一個) 移動(一個,一個,一個) 。 的雙曲正切值。 的雙曲正切值。 的雙曲正切值。 ,
8、應(yīng)用程序,例如:假幣稱量12枚硬幣。 其中11張是真幣,1張是假幣,假幣和真幣只是重量不同,但不知道重量。 只聽三次就知道偽鈔,知道重量。 如何測量解題是稱量方法、應(yīng)用程序、解題構(gòu)想1 .假說:假設(shè)A-L是偽鈔,輕,假設(shè)A-L是重,驗(yàn)證結(jié)果是否矛盾,矛盾則假說不成立,否則假說成立。2 .排除法:根據(jù)結(jié)果排除: (1)有的時候,如果平衡,所有硬幣都是真的(2)有的時候,結(jié)果稱為右端重或左端重,天平上沒有的是真幣(3)與真幣相比判斷重量,應(yīng)用程序,例如假幣稱量12枚硬幣,其假幣和真幣只是重量不同,但不知道重量,只要問三次就能知道假幣,如何測量,ABCD EFGH even /都有真幣ABCI EF
9、JK up /假幣,但不重量輕,是哪個abij efgh eve k是假幣,k是輕的其他情況下,例子2次測定的情況下ABCI EFJK evenL是假幣,再一次L ABCI EFJK down和up的情況下,處理第三次測定的情況下ABIJ EFGH up I是假幣,重ABIJ EFGH downJ是假幣,輕的應(yīng)用程序假券稱量12枚硬幣,其中11枚是真券,1枚假券,假券和真券只是重量不同,但不知道重量,只要問三次就能知道假券的重量,應(yīng)該怎么測量呢? 不知道重量,哪個ABIJ EFGH even /I,j是真券,k是假券,然后k輕的例子第一次的測定狀況ABCD EFGH up第一次的測定-AIJK
10、 BCDH even EFG有假幣,輕的,EFG一對一就行- AIJK BCDH up A, 其中一對與真幣比較一次-AIJK BCDH downBCD有假幣,很重,取一對進(jìn)行一次測量,適用應(yīng)用程序的例子:假幣稱量了12枚硬幣。 其中11張是真幣,1張是假幣,假幣和真幣只是重量不同,但不知道重量。 只要聽到三次就能知道假鈔,如何測量它的重量。 假說: A-L表示12枚硬幣,依次假設(shè)A-L為假幣,每次檢查是否與假設(shè)的結(jié)果矛盾,如果矛盾假設(shè)不成立,則程序解法: 3個狀態(tài)上升,下降(記載右端的狀態(tài))應(yīng)用程序定義變量,稱量3次。 如果與條件不矛盾,則輸出結(jié)論為一枚一枚的銀幣較輕,如果與條件不矛盾,則輸
11、出結(jié)論記為重/輕的銀幣位于某個稱量的左端,下一個稱量為down,假設(shè)重/輕的銀幣位于某個稱量的右端,則輸出結(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等.壓縮文件請下載最新的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屆山東省泰安肥城市高二下化學(xué)期末檢測模擬試題含解析
- 供應(yīng)工業(yè)冷庫管理辦法
- 數(shù)據(jù)湖成本控制-洞察及研究
- 檔案數(shù)據(jù)追溯管理辦法
- 公安舉報投訴管理辦法
- 貨物裝卸機(jī)械使用安全守則
- 智能化農(nóng)用機(jī)器人及其人機(jī)交互優(yōu)化-洞察及研究
- 醫(yī)療幫扶專家管理辦法
- 信用評級機(jī)構(gòu)競爭態(tài)勢與公司債券發(fā)行上市審核探析
- 公安職工餐廳管理辦法
- 膩?zhàn)訉?shí)驗(yàn)方法
- GB/T 18487.1-2015電動汽車傳導(dǎo)充電系統(tǒng)第1部分:通用要求
- GB 30603-2014食品安全國家標(biāo)準(zhǔn)食品添加劑乙酸鈉
- 2023年義烏市雙江湖開發(fā)集團(tuán)有限公司招聘筆試題庫及答案解析
- 通信建設(shè)工程質(zhì)量和安全生產(chǎn)監(jiān)督檢查表最新文檔
- 醫(yī)學(xué)高級職稱評審答辯報告PPT模板
- 肺栓塞的診斷和治療
- DB4451-T 1-2021《地理標(biāo)志產(chǎn)品+鳳凰單叢(樅)茶》-(高清現(xiàn)行)
- 加油站火災(zāi)、爆炸事故現(xiàn)場處置方案
- IPQC技能培訓(xùn)
- 2022年(詳細(xì)版)高中數(shù)學(xué)學(xué)業(yè)水平考試知識點(diǎn)
評論
0/150
提交評論