freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

[工學(xué)]第7章-函數(shù)(編輯修改稿)

2024-11-12 18:50 本頁面
 

【文章內(nèi)容簡介】 數(shù) 調(diào)用 F2函數(shù) F2函數(shù) 調(diào)用 F1函數(shù) 例: f1(int a) f2(int k) { … { … y=f2(x)。 u=f1(s)。 … … } } 直接遞歸 間接遞歸 函數(shù)的遞歸調(diào)用 f1() { … f1()。 … } f1() { … f2()。 … } f2() { … f1()。 … } 函數(shù)遞歸調(diào)用 ?遞歸算法在可計算性理論中占有重要地位,它是算法設(shè)計的有力工具,對于拓展編程思路非常有用。 注意:函數(shù)遞歸調(diào)用 遞歸過程 不應(yīng)無限制 地進行下去,當(dāng)調(diào)用有限次以后,就應(yīng)當(dāng)?shù)竭_遞歸調(diào)用的終點而得到一個確定值(如本例中的fact(1)=1),然后 進行回代 。 回代的過程是從一個已知值推出下一個值 。 ?任何有意義的遞歸總是由兩部分組成的:遞歸形式 與 遞歸終止條件 。 C語言程序設(shè)計 51 函數(shù)的遞歸調(diào)用舉例 課本 p154例 age(n)= 10 n=1 age(n1)+2 n1 C語言程序設(shè)計 52 include void main() { int age(int n)。 printf(%d\n,age(5))。 } int age(int n) { int c。 if(n==1) c=10。 else c=age(n1)+2。 return(c)。 } 函數(shù)調(diào)用 函數(shù)調(diào)用 結(jié)束遞歸的條件 習(xí)題 1 計算 n!,其中 n由鍵盤輸入。 由于 n!=1*2*3*?*n ,是一個累乘的過程。用變量 x表示累乘的結(jié)果,為了求得 x的值,將 x的初值置為 1,然后利用一個循環(huán)進行累乘求積,每次循環(huán)逐次乘上 2,3, ? 直到 n。 當(dāng) n較大時, i是一個相當(dāng)大的數(shù),為此將變量 x定義為實型。 n和循環(huán)變量 i定義為整型。 流程圖 1 計算 n!,其中 n由鍵盤輸入。 main() { int i,n。 float x=1。 printf(Please input n: )。 scanf(%d,amp。n)。 for(i=1。i=n。i++) x=x*i。 printf(%d!=%\n,n,x)。 } 1. 計算 n!,其中 n由鍵盤輸入。 main() { int n。 printf(Please input n: )。 scanf(%d,amp。n)。 printf(%d!=%.0f\n,n,fact(n))。 } 使用函數(shù)的例子 (不使用遞歸) double fact( int m) {double x=1。 int i。 for(i=1。i=m。i++) x*= i。 return x。 } 用遞歸算法求 n! 定義: 函數(shù) fact(n) = n! =n*(n1) ! = n*fact(n1) 即 fact(n) = n*fact(n1) 已知 fact(1) = 1 則 fact(2) = 2*fact(1) = 2*1 fact(3) = 3*fact(2) =3*2*fact(1) = 3*2*1 … … fact(5)= 5!=120 5*fact(4)= 5*4!=5* 24=120 4*fact(3)= 4*3!=4* 6=24 3*fact(2)= 3* 2!=3* 2=6 2*fact(1)= 2*1!=2* 1= 2 fact(1)= 1 C語言程序設(shè)計 59 函數(shù)的遞歸調(diào)用舉例 ?課本 p156例 n!= 1 n=0,1 n*(n1)! n1 C語言程序設(shè)計 60 include void main() { int fac(int n)。 int n。 long y。 printf(input an integer number:)。 scanf(%d,amp。n)。 y=fac(n)。 printf(%d!=%d\n,n,y)。 } int fac(int n) { int f。 if(n0) printf(n0,data error!)。 else if(n==0||n==1) f=1。 else f = fac(n1)*n。 return(f)。 } 結(jié)束遞歸的條件 main() {int m , n, t, r, p。 scanf(%d%d, amp。m, amp。n)。 p=m*n。 /* p 用于計算最小公倍數(shù) */ if(mn) {t=m。 m=n。 n=t。 } /*大數(shù)放在 m 中 , 小數(shù)放在 n 中 */ r=m%n。 while(r!=0) /* while(r!=0)余數(shù)不為 0時 ,輾轉(zhuǎn)相除 */ {m=n。 n=r。 r=m%n。 } printf(最大公約數(shù)是 : %d\n, n)。 printf(最小公倍數(shù)是 : %d\n,p/n)。 } 求兩個正整數(shù) m和 n的最大公約數(shù)和最小公倍數(shù) main() { int find(int,int)。 int m,n,gy,gb。 printf(input m and n:\n)。 scanf(%d%d,amp。m,amp。n)。 gy=gys(m,n)。 gb=m*n/gy。 printf(gy=%d\n,gy)。 printf(gb=%d\n,gb)。 } int gys (int x,int y) { int r,t。 if(xy) {t=x。x=y。y=t。} r=x%y。 while(r!=0) {x=y。 y=r。 r=x%y。 } return y。 } 求兩個正整數(shù) m和 n的最大公約數(shù)和最小公倍數(shù) 求最大公約數(shù)和最小公倍數(shù)的題目使用函數(shù)的方法編程 main() { int m , n, gy,gb。 int gys(int,int) 。 int gbs(int ,int ,int ) 。 scanf(%d%d, amp。m, amp。n)。 gy=gys(m,n)。 gb=gbs(m,n,gy)。 printf(gong yue shu : %d\n,gy)。 printf(gong bei shu: %d\n, gb)。 } int gys(int m,int n) { int t,r。 if(mn) {t=m。 m=n。 n=t。 } r=m%n。 while(r!=0) {m=n。 n=r。 r=m%n。} return n。 } int gbs(int m,int n,int gy) { return(m*n/gy)。 } include void main() { int large(int x,int y)。 int a[10],b[10],i,n=0,m=0,k=0。 printf(enter array a:\n)。 for(i=0。i10。i++) scanf(%d,amp。a[i])。 printf(\n)。 printf(enter array b:\n)。 for(i=0。i10。i++) scanf(%d,amp。b[i])。 printf(\n)。 for(i=0。i10。i++) { if(large(a[i],b[i])==1) n++。 else if(large(a[i],b[i])==0) m++。 else k++。 } printf(a[i]b[i] %d times\n , n)。 printf(a[i]=b[i] %d times\n,m)。 printf(a[i]b[i] %d times\n,k)。 數(shù)組元素作為函數(shù)實參 數(shù)組元素作為函數(shù)實參 int large(int x,int y) { int flag。 if(xy) flag=1。 else if(xy) flag=1。 else flag=0。 return (flag)。 } if(nk) printf(array a is larger than array b\n)。 else if(nk) printf(array a is smaller than array b\n)。 else printf(array a is equal to array b \n)。 } 用數(shù)組求學(xué)生的平均成績 include define N 10 void main() { int i。 float score[N],average=0。 for(i=0。iN。i++) { scanf(%f,amp。score[i])。 average=ave
點擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1