資源描述:
《c011函數(shù)應(yīng)用.ppt》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、第11講函數(shù)應(yīng)用數(shù)學(xué)計(jì)算機(jī)科學(xué)系第11講函數(shù)應(yīng)用本講主要內(nèi)容一、函數(shù)的嵌套調(diào)用二、函數(shù)的遞歸調(diào)用1.公式遞歸問(wèn)題2.過(guò)程遞歸問(wèn)題三、數(shù)組作為函數(shù)的參數(shù)1.數(shù)組元素作為函數(shù)參數(shù)2.數(shù)組名作為函數(shù)參數(shù)函數(shù)定義、聲明、調(diào)用要點(diǎn):1.形參個(gè)數(shù)及類型;2.需要不需要返回值;3.當(dāng)有返回值時(shí),其類型決定函數(shù)類型;4.函數(shù)體中使用的變量可根據(jù)需要隨時(shí)增減。函數(shù)定義函數(shù)聲明1.聲明語(yǔ)句出現(xiàn)在主調(diào)函數(shù)中;2.聲明中可省略形參名,但不能省略形參類型;3.何時(shí)可省略聲明語(yǔ)句。函數(shù)調(diào)用1.函數(shù)調(diào)用出現(xiàn)在主調(diào)函數(shù)中;2.調(diào)用形式為:函數(shù)名(實(shí)參列表);3.要明確是傳值調(diào)用(單向)還是傳址調(diào)用(雙向)。返回一、
2、函數(shù)的嵌套調(diào)用1.函數(shù)的嵌套函數(shù)嵌套是指在一個(gè)自定義函數(shù)的函數(shù)體中,又出現(xiàn)了另外自定義函數(shù)的調(diào)用。如函數(shù)a調(diào)用函數(shù)b,函數(shù)b又調(diào)用函數(shù)c等。例10-1:已知組合數(shù):求對(duì)于任意m、n時(shí)的值。返回2.函數(shù)的嵌套舉例例10-1:已知組合數(shù)floatfac(intk){inti;floatf;for(i=1,f=1;i<=k;i++)f*=i;return(f);}floatcmn(intm,intn){floatres;res=fac(m)/(fac(n)*fac(m-n));return(res);}main(){intm,n;floatt;scanf("%d,%d",&m,&n);t=
3、cmn(m,n);printf("C(%d,%d)=%f",m,n,t);}求對(duì)于任意m、n時(shí)的值求階乘fac函數(shù)cmn函數(shù)主函數(shù)調(diào)用了scanf()、cmn()、printf()函數(shù)三次調(diào)用了fac()函數(shù)返回二、函數(shù)的遞歸調(diào)用1.公式遞歸問(wèn)題例10-2用遞歸方法求:基本過(guò)程分兩步:⑴寫出遞歸公式;⑵將遞歸公式函數(shù)化;例10-3用遞歸方法求n!2.過(guò)程遞歸問(wèn)題有的問(wèn)題不能直接用一個(gè)遞歸公式進(jìn)行描述,但處理過(guò)程包含了遞歸的思路,這一類問(wèn)題稱為過(guò)程遞歸。最典型的過(guò)程遞歸問(wèn)題——漢諾塔問(wèn)題!返回intsum(intn){if(n==1)return(1);elsereturn(sum
4、(n-1)+n);}main(){intn;scanf("%d",&n);printf("%d",sum(n);}例10-2用遞歸方法求:遞歸公式:編寫主調(diào)函數(shù):遞歸函數(shù)sum()的調(diào)用變化演示圖返回intsum(intn){if(n==1)return(1);elsereturn(sum(n-1)+n);}遞歸函數(shù)sum的調(diào)用變化示意圖假設(shè)n=3{return(sum(2)+3);}sum(3)函數(shù)體{return(sum(1)+2);}sum(2)函數(shù)體{return(1);}sum(1)函數(shù)體133main(){intn;scanf("%d",&n);printf("%d
5、n",sum(n);}66返回例10-3用遞歸方法求n!遞歸公式:longfact(intn){if(n<=1)return(1);elsereturn(n*fact(n-1));}main(){longfact(int);intn;scanf("%d",&n);printf("%d!=%ld",n,fact(n));}返回編寫主調(diào)函數(shù):遞歸函數(shù)fact的自身調(diào)用原理同sum函數(shù)漢諾塔問(wèn)題題目介紹:有三個(gè)柱和n個(gè)大小各不相同的盤子,開(kāi)始時(shí),所有盤子以塔狀疊放在柱A上,要求按一定規(guī)則,將柱A上的所有盤子借助于柱C移動(dòng)到柱B上。移動(dòng)規(guī)則如下:⑴一次只能移動(dòng)一個(gè)盤子。⑵任何時(shí)候不能把盤
6、子放在比它小的盤子的上面。漢諾塔問(wèn)題#includelongi=0;main(){intdisks;voidhanoi(int,char,char,char);printf("Numberofdisks:");scanf("%d",&disks);printf("");hanoi(disks,'A','C','B');}voidmove_disk(charsrc,chardst){if(i==5){printf("");i=0;}i++;printf("%c-->%c",src,dst);}voidhanoi(intn,charsrc,charmid,cha
7、rdst){voidmove_disk(char,char);if(n==1){move_disk(src,dst);return;}hanoi(n-1,src,dst,mid);move_disk(src,dst);hanoi(n-1,mid,src,dst);}返回三、數(shù)組作為函數(shù)的參數(shù)1.數(shù)組元素作為函數(shù)參數(shù)數(shù)組元素作為函數(shù)的參數(shù)時(shí),只傳送作為實(shí)參的數(shù)組元素,此時(shí)按使用其他簡(jiǎn)單變量的方法使用數(shù)組元素?!祩鬟f!例10-5把一個(gè)整型數(shù)組的所有素?cái)?shù)找出