




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、c語(yǔ)言程序設(shè)計(jì),lec 4 函數(shù),西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,2,引言,例:求一些圓盤的面積,圓盤半徑分別為:3.24、2.13、0.865、3.746、12.3364、8.421,設(shè)圓周率為 3.1416,可寫(xiě)出下面程序: #include int main () printf(radius:%f, area:%fn, 3.24, 3.24 * 3.24 * 3.1416); printf(radius:%f, area:%fn, 2.13, 2.13 * 2.12 * 3.1415);,繁瑣的東西很容易弄錯(cuò),不易修改,標(biāo)準(zhǔn)函數(shù)有限,需求無(wú)限,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,3,引言,如果有求圓
2、面積的函數(shù)double c_area(double r) 如果有打印圓面積的函數(shù) pc_area(double r,int main () printf(radius:%f, area:%fn, 3.24, c_area(3.24) ); printf(radius:%f, area:%fn, 2.13, c_area(2.13) );,函數(shù)能使程序變短, 變得易寫(xiě)/易理解/易修改,int main () pc_area(3.24); pc_area(2.13);,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,4,引言,半徑3.24高2.4的圓錐體積: 外半徑5.3,內(nèi)半徑3.07,高4.2的空心圓柱體積,2.
3、4 * c_area( 3.24 ) / 3.0,c_area(5.3) - c_area(3.07) )*4.2,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,5,目標(biāo),學(xué)會(huì)把常用的代碼定義為函數(shù) 學(xué)會(huì)在程序中使用函數(shù) 掌握c語(yǔ)言提供的常用庫(kù)函數(shù) 了解遞歸的基本原理,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,6,主要內(nèi)容,函數(shù)定義 函數(shù)調(diào)用 c語(yǔ)言常用函數(shù) 函數(shù)與遞歸 變量作用域,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,7,4.1 函數(shù)定義,將實(shí)現(xiàn)某個(gè)功能的代碼變成函數(shù),西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,8,函數(shù)定義,把一段計(jì)算定義成函數(shù)并給以命名,定義后就可以在任何需要的地方通過(guò)名字調(diào)用,定義函數(shù) c_area 的程序片段: double
4、 c_area (double r) return r * r * 3.1416;,9,定義函數(shù)的要素,函數(shù)頭 函數(shù)名:使用函數(shù)需要的名稱,合法標(biāo)識(shí)符 返回值類型函數(shù)計(jì)算結(jié)果的數(shù)據(jù)類型 參數(shù)表完成計(jì)算需要的數(shù)據(jù)(數(shù)量和類型) 函數(shù)體,實(shí)現(xiàn)函數(shù)功能的代碼, 由一對(duì)大括號(hào)包圍,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,10,函數(shù)返回值,函數(shù)返回值表示函數(shù)內(nèi)代碼計(jì)算的結(jié)果 一個(gè)函數(shù)最多只能有一個(gè)返回值,返回值通常是計(jì)算結(jié)果或者表示計(jì)算狀態(tài)的信息,由調(diào)用者使用 如果函數(shù)有返回值函數(shù)必須指定返回值類型,如果函數(shù)不需要返回值必須使用void作為函數(shù)返回值類型。 函數(shù)返回值通過(guò)return語(yǔ)句返回,return語(yǔ)句一旦執(zhí)
5、行,整個(gè)函數(shù)就結(jié)束,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,11,函數(shù)返回值,一個(gè)函數(shù)中可以有多條return語(yǔ)句,但只會(huì)執(zhí)行其中一條。 return語(yǔ)句形式:return 表達(dá)式; return語(yǔ)句中表達(dá)式求值的類型應(yīng)該和函數(shù)返回值類型一致,如果不一致會(huì)自動(dòng)進(jìn)行類型轉(zhuǎn)換 返回值類型為void時(shí),不需要return語(yǔ)句或者寫(xiě)成return,12,函數(shù)定義示例,void pc_area(double r) printf(r = %f, s = %fn, r, 3.14159265 * r * r);,double c_area (double r) return r * r * 3.1416;,int ma
6、x(int a, int b) if(ab) return a; return b;,int compare( int x, int y ) if( x = y ) return 0; else if( x y ) return 1; else return -1;,13,關(guān)于return語(yǔ)句,double c_area (double r) return r * r * 3.1416; int main() double v=2.4 * c_area( 3.24 ) / 3.0; printf(v=%fn,v);,int main() double s = c_area( 3.24 ); d
7、ouble v=2.4 * s / 3.0; printf(v=%fn,v);,需要注意返回值類型為void的函數(shù)不能放在表達(dá)式中參與運(yùn)算,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,14,函數(shù)參數(shù)表,函數(shù)可以有0個(gè)或多個(gè)參數(shù),這些參數(shù)稱為形式參數(shù) 每個(gè)參數(shù)必須指明類型和參數(shù)名稱 函數(shù)參數(shù)是函數(shù)內(nèi)的局部變量,只在函數(shù)體內(nèi)有效 函數(shù)參數(shù)只有在函數(shù)被調(diào)用時(shí)才有效 函數(shù)參數(shù)的初始值由調(diào)用者傳入(通過(guò)實(shí)際參數(shù)以值拷貝的方式傳入,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,15,形參和實(shí)參,形參:在函數(shù)定義中括號(hào)內(nèi)的標(biāo)識(shí)符,與函數(shù)調(diào)用時(shí)的實(shí)參一一對(duì)應(yīng) 實(shí)參:在調(diào)用函數(shù)的括號(hào)中使用的表達(dá)式,它的值被傳入函數(shù)并賦值給函數(shù)的對(duì)應(yīng)形參,西安電
8、子科技大學(xué)計(jì)算機(jī)學(xué)院,16,形參和實(shí)參,include /定義函數(shù) double c_area (double r ) return r * r * 3.1416; int main () double v,radius=3.24; /調(diào)用函數(shù) v=2.4 * c_area( radius ) / 3.0; return 0;,形參,實(shí)參,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,17,函數(shù)定義不能嵌套,include #include double c_area (double r) return pow(r, 2) * 3.1416; int main () double v; v=2.4 * c_ar
9、ea( 3.24 ) / 3.0; return 0;,include #include int main () double c_area (double r) return pow(r, 2) * 3.1416; double v; v=2.4 * c_area( 3.24 ) / 3.0; return 0;,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,18,4.2 函數(shù)調(diào)用,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,19,調(diào)用系統(tǒng)函數(shù),包含必要的頭文件,其本質(zhì)是將函數(shù)原型添加到程序中 在需要的地方使用函數(shù),傳入類型和數(shù)量正確的實(shí)際參數(shù),函數(shù)返回值可以作為表達(dá)式的一部分,include #include int ma
10、in() double sum=0; int n=1; while(n=100) sum=sum+ sin(1.0/n) ; n=n+1; printf(sum=%fn,sum); return 0;,函數(shù)原型就是函數(shù)頭部加上分號(hào), 其作用是告訴編譯器函數(shù)應(yīng)該以什么形式調(diào)用,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,20,調(diào)用自定義函數(shù),方法1(函數(shù)定義放在調(diào)用函數(shù)之前): 在需要的地方使用函數(shù),傳入類型和數(shù)量正確的實(shí)際參數(shù),函數(shù)返回值可以作為表達(dá)式的一部分,include /c_area函數(shù)在調(diào)用前定義 double c_area (double r) return r * r * 3.1416; int
11、 main () double v; printf(radius:%f, area:%fn, 3.24, c_area(3.24) ); v=2.4 * c_area( 3.24 ) / 3.0; return 0;,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,21,調(diào)用自定義函數(shù),方法2(函數(shù)定義放在調(diào)用函數(shù)之后): 在函數(shù)調(diào)用之前給出函數(shù)原型 在需要的地方使用函數(shù),傳入類型和數(shù)量正確的實(shí)際參數(shù),函數(shù)返回值可以作為表達(dá)式的一部分,include /函數(shù)原型在調(diào)用之前 double c_area (double r); int main () double v; printf(radius:%f, area:
12、%fn, 3.24, c_area(3.24) ); v=2.4 * c_area( 3.24 ) / 3.0; return 0; /函數(shù)定義在調(diào)用之后 double c_area (double r) return r * r * 3.1416;,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,22,函數(shù)調(diào)用的若干問(wèn)題,c語(yǔ)言是一個(gè)函數(shù)式語(yǔ)言,所有可執(zhí)行語(yǔ)句都必須放在某個(gè)函數(shù)體內(nèi) 調(diào)用函數(shù)的函數(shù)稱為主調(diào)函數(shù),被調(diào)用的函數(shù)稱為被調(diào)函數(shù) 當(dāng)函數(shù)調(diào)用發(fā)生時(shí),主調(diào)函數(shù)暫停,程序控制轉(zhuǎn)入被調(diào)函數(shù),被調(diào)函數(shù)執(zhí)行結(jié)束后,主調(diào)函數(shù)繼續(xù),西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,23,函數(shù)調(diào)用的若干問(wèn)題,include #include d
13、ouble c_area (double r) return pow(r, 2) * 3.1416; int main () double v; v=2.4 * c_area( 3.24 ) / 3.0; return 0;,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,24,參數(shù)傳遞機(jī)制,形式參數(shù)在函數(shù)調(diào)用時(shí)才分配存儲(chǔ)空間,并接受實(shí)際參數(shù)的值 實(shí)際參數(shù)可以為復(fù)雜的表達(dá)式,在函數(shù)調(diào)用前獲得計(jì)算 形式參數(shù)與實(shí)際參數(shù)可同名,也可不同名,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,25,參數(shù)傳遞機(jī)制,參數(shù)較多時(shí),實(shí)際參數(shù)值逐一賦值,它們必須保持?jǐn)?shù)目、類型、順序的一致 參數(shù)的賦值過(guò)程單向不可逆,函數(shù)內(nèi)部對(duì)形式參數(shù)值的修改不會(huì)反映到實(shí)際
14、參數(shù)中 函數(shù)參數(shù)一般為函數(shù)輸入集的一部分,函數(shù)輸出集一般使用返回值表示,只有使用特殊的手段(指針/數(shù)組)才可以將函數(shù)參數(shù)作為函數(shù)輸出集的一部分,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,26,參數(shù)傳遞機(jī)制,void swap( int a, int b ) int t; t = a; a = b; b = t;,int main() int a=5, b=3; printf( before swap: a= %d; b= %dn, a, b ); swap(a, b); printf( after swap: a= %d; b=%dn, a, b ); return 0;,swap函數(shù)中的a和b與main函
15、數(shù)中的a和b是什么關(guān)系? 兩個(gè)printf輸出的結(jié)果是什么,swap函數(shù)數(shù)據(jù)區(qū),main函數(shù)數(shù)據(jù)區(qū),void swap( int a, int b ) int t; / 2 t = a; a = b; b = t; / 3,int main() int a=5, b=3; / 1 swap(a, b); / 4 return 0;,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,28,函數(shù)示例,1. 請(qǐng)寫(xiě)一個(gè)程序,給出指定整數(shù)范圍1,10000內(nèi)的所有完數(shù)。判斷是不是完數(shù)用一個(gè)函數(shù)完成,int isperfectnumber(int n) int i; for(i=1,sum=0;i=n/2;i+) if(n%i
16、=0) sum+=i; return sum=n;,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,29,函數(shù)示例,2. 寫(xiě)一個(gè)函數(shù)求兩個(gè)整數(shù)的最大公約數(shù),int gcd( int m, int n) int i; int min=m1;i-) if(m%i=0,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,30,函數(shù)示例,3. 寫(xiě)一個(gè)函數(shù)判斷一個(gè)數(shù)是不是素?cái)?shù),用函數(shù)返回值表示判斷結(jié)果(非0表示是素?cái)?shù),0 表示不是素?cái)?shù),int isprime(int n) int i, isprime=1; for(i=2; in; i+) if(n%i=0) isprime=0; break; return i=n;,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院
17、,31,課堂練習(xí),寫(xiě)一個(gè)函數(shù)判斷傳入的整數(shù)n(100n1000)是不是“水仙花數(shù)”,是返回1,否則返回0 如果一個(gè)3位整數(shù)各位數(shù)字的立方和等于這個(gè)數(shù)就是水仙花數(shù),西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,32,4.3 變量作用域(教材5.4,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,33,swap函數(shù)的問(wèn)題,參數(shù)傳遞是賦值傳遞,修改函數(shù)參數(shù)(形參)對(duì)原來(lái)的數(shù)據(jù)(實(shí)參)沒(méi)有影響,因此不能完成交換數(shù)據(jù)的任務(wù) 解決方法 方法1:修改需要交換的數(shù)據(jù)的作用域,將其變?yōu)槿肿兞?方法2:通過(guò)參數(shù)傳遞需要交換的數(shù)據(jù)的地址,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,34,變量作用域,作用域:變量的有效范圍,也就是變量的生存范圍 局部變量: 函數(shù)參數(shù),
18、其作用域?yàn)檎麄€(gè)函數(shù) 函數(shù)內(nèi)的變量,其作用域?yàn)樽兞慷x位置到函數(shù)結(jié)束位置 復(fù)合語(yǔ)句內(nèi)的變量,其作用域?yàn)樽兞慷x位置到復(fù)合語(yǔ)句結(jié)束位置 全局變量 定義在所有函數(shù)之外的變量,其作用域?yàn)樽兞慷x位置到程序結(jié)束位置,include int a=10,b=10; /全局變量 void func1() printf(func1:a=%d,b=%dn,a,b); void func2() int a=30,b=30; printf(func2:a=%d,b=%dn,a,b); int c=1,d=1; void func3(int a,int b) printf(fuc3:a=%d,b=%dn,a,b); i
19、nt main() int a=20,b=20; int a=40,b=40;,全局變量a,b的作用域,全局變量c,d的作用域,局部變量a,b的作用域,函數(shù)參數(shù)a,b的作用域,main函數(shù)局部變量a,b的作用域,復(fù)合結(jié)構(gòu)內(nèi)a,b的作用域,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,36,使用全局變量的swap函數(shù),void swap() int t; t = a; a = b; b = t;,int main() printf( before swap: a= %d; b= %dn, a, b ); swap(); printf( after swap: a= %d; b=%dn, a, b ); retur
20、n 0;,int a=5, b=3,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,37,4.4 c語(yǔ)言常用函數(shù),西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,38,數(shù)學(xué)函數(shù),include double sin(double rad); double sqrt(int n); double pow(double,double); double fabs(double); double log( double x ); double log10( double x,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,39,輸入輸出函數(shù),include printf格式化輸出 scanf格式化輸入 getchar輸入一個(gè)字符 putchar輸出一個(gè)字符,西
21、安電子科技大學(xué)計(jì)算機(jī)學(xué)院,40,輸入輸出函數(shù),int scanf( const char *format ,argument. ); 可變參數(shù)-參數(shù)個(gè)數(shù)=1 返回值表示正確轉(zhuǎn)換并賦值的字段數(shù),經(jīng)常用來(lái)判斷輸入格式是否正確,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,41,scanf返回值示例(scanf.c,include int main() int n=0; int a=0,b=0; n=scanf(%d %d,輸入1: 3 4,輸入2: 3 4.5,輸入3: 3 a,輸出1: n=2 a=3 b=4,輸出2: n=2 a=3 b=4,輸出1: n=1 a=3 b=0,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,42,輸
22、入輸出函數(shù),int getchar()從標(biāo)準(zhǔn)輸入流(stdin)讀取一個(gè)字符 緩沖輸入,需要按下回車后才能獲取到值 正常情況下,返回值表示讀入的字符 如果返回值是eof(-1)表示讀錯(cuò)誤或到了流結(jié)束位置 int putchar(int ch)將字符ch寫(xiě)入標(biāo)準(zhǔn)輸出流(stdout) 示例:將輸入的一行小寫(xiě)字符轉(zhuǎn)換成大寫(xiě)字符。(chario.c,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,43,時(shí)間函數(shù),include time_t time(time_t *timer)獲得從1970/1/1至今的秒數(shù) time_t可以看作整數(shù)類型 clock_t clock();獲得從程序開(kāi)始運(yùn)行至今處理器經(jīng)過(guò)的時(shí)鐘數(shù) cl
23、ock_t可以看作整數(shù)類型 clocks_per_sec表示每秒有多少個(gè)時(shí)鐘的常數(shù),西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,44,時(shí)間函數(shù)(time.c,include #include int main() int start,finish; double time; start=clock(); . finish=clock(); time=(finish-start)*1.0/clocks_per_sec; . return 0;,對(duì)這一段程序計(jì)時(shí),西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,45,隨機(jī)數(shù)函數(shù),include int rand()產(chǎn)生一個(gè)0,rand_max范圍內(nèi)的偽隨機(jī)數(shù) rand_max是一個(gè)系
24、統(tǒng)常數(shù),可以直接使用 void srand( unsigned int seed )設(shè)置偽隨機(jī)數(shù)序列的種子 如果不設(shè)定隨機(jī)數(shù)系列的種子,同一個(gè)程序兩次運(yùn)行得到的隨機(jī)數(shù)完全相同 通常以時(shí)間作為隨機(jī)數(shù)種子,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,46,隨機(jī)數(shù)函數(shù),產(chǎn)生5個(gè)隨機(jī)數(shù)(rand1.c,include #include int main() int i; printf( rand_max is %d.n, rand_max ); printf( five numbers generated as follows:n ); for( i = 0; i 5; i+ ) printf( “%d , rand
25、() ); printf( n ); return 0;,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,47,隨機(jī)函數(shù),用時(shí)間做種子產(chǎn)生5個(gè)隨機(jī)數(shù)(rand2.c,include #include #include int main() int i; printf( five numbers generated as follows:n ); srand( (int)time(null) ); for( i = 0; i 5; i+ ) printf( %d; , rand() ); printf( n ); return 0;,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,48,隨機(jī)函數(shù),生成5個(gè)low,high范圍內(nèi)的隨機(jī)數(shù)
26、(rand3.c,include #include #include int main() int i, low=10, high=20; srand( (int)time(null) ); for( i = 0; i 5; i+ ) printf( %d; , low+(rand()%(high-low) ); printf( n ); return 0;,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,49,4.5 函數(shù)與遞歸(教材4.3,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,50,引言,函數(shù)調(diào)用可以嵌套,即在一個(gè)函數(shù)中調(diào)用另一個(gè)函數(shù) 如果一個(gè)函數(shù)調(diào)用自己就會(huì)構(gòu)成遞歸調(diào)用,double c_area (double r
27、) return pow(r, 2) * 3.1416;,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,51,遞歸函數(shù)示例,求n,fibonacci數(shù)列,int fac(int n) if(n=0) return 1; return n*fac(n-1) ;,int fib(int n) if(n=0|n=1) return 1; return fib(n-1)+fib(n-2) ;,int main() printf(3!=%d,fac(3);,int main() printf(f(5)=%d,fib(5);,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,52,遞歸函數(shù)的調(diào)用過(guò)程,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,53,使用遞歸的
28、條件,具有遞歸定義的形式 有明確的結(jié)束條件,結(jié)束條件,遞歸定義,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,54,漢諾塔(hanoi)問(wèn)題,假設(shè)有三個(gè)分別命名為 x、y 和 z 的塔座,在塔座 x 上插有 n 個(gè)直徑大小不同、依小到大分別編號(hào)為 1, 2, ., n 的圓盤,如圖所示: 要求將塔座x上的 n 個(gè)圓盤移動(dòng)到塔座 z 上并按相同順序疊放,圓盤移動(dòng)時(shí)必須遵循下述規(guī)則: 每次只能移動(dòng)一個(gè)圓盤; 圓盤可以插在x、y與z中的任意塔座上; 任何時(shí)刻都不能將較大的圓盤壓在較小的圓盤上。 如何實(shí)現(xiàn)移動(dòng)圓盤的操作呢,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,55,漢諾塔(hanoi)問(wèn)題,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,56,漢諾
29、塔(hanoi)問(wèn)題,待解決的問(wèn)題 q1:是否存在某種簡(jiǎn)單情形,問(wèn)題很容易解決 q2:是否可將原始問(wèn)題分解成性質(zhì)相同但規(guī)模較小的子問(wèn)題,且新問(wèn)題的解答對(duì)原始問(wèn)題有關(guān)鍵意義,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,57,漢諾塔(hanoi)問(wèn)題,解決方案 a1:只有一個(gè)圓盤時(shí)是最簡(jiǎn)單情形 a2:對(duì)于 n 1,考慮 n 1 個(gè)圓盤,如果能將 n - 1 個(gè)圓盤移動(dòng)到某個(gè)塔座上,則可以移動(dòng)第 n 個(gè)圓盤 策略:首先將 n 1 個(gè)圓盤移動(dòng)到塔座 y 上,然后將第 n 個(gè)圓盤移動(dòng)到 z 上,最后再將 n - 1 個(gè)圓盤從 y 上移動(dòng)到 z 上,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,58,漢諾塔(hanoi)問(wèn)題,void m
30、ovehanoi( unsigned int n, /圓盤數(shù)量 char from, /起始位置 char tmp, /中轉(zhuǎn)位置 char to )/目標(biāo)位置 if( n = 1 ) /遞歸結(jié)束條件 將圓盤1從 from 移動(dòng)到 to else 將 n 1 個(gè)圓盤從 from 以 to 為中轉(zhuǎn)移動(dòng)到 tmp; /遞歸 將圓盤 n 從 from 移動(dòng)到 to 將 n - 1個(gè)圓盤從 tmp 以 from 為中轉(zhuǎn)移動(dòng)到 to; /遞歸,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,59,遞歸的缺點(diǎn),函數(shù)調(diào)用需要額外的空間(棧)來(lái)完成,在調(diào)用次數(shù)很多的情況下會(huì)降低程序效率 遞歸調(diào)用中的重復(fù)計(jì)算,西安電子科技大學(xué)計(jì)算機(jī)學(xué)院,60,fibonacci數(shù)列的兩種求解方法(fib.c,使用遞歸求fibonacci數(shù)列 int fib_recursion(int n) if(n=0 | n=1) return 1; return fib_recursion(n-1) + fib_recursion(n-2);,使用循環(huán)求fibonacci數(shù)列 int fib_loop(int n) int fn,fn_1=1,fn_2=1,i; if(n=0|n=1)return 1; for(i=2;i=
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)2,4-二硝基氟苯數(shù)據(jù)監(jiān)測(cè)報(bào)告
- 2025至2030年中國(guó)防爆電熱棒市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)鋼帶預(yù)力發(fā)條市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)超聲焊接換能器市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)腿外分訓(xùn)練器市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)精密金屬?zèng)_壓零配件市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)益智用品市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)環(huán)保智能型銘牌機(jī)市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)氣流噴霧干燥機(jī)市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2025至2030年中國(guó)智能電量表市場(chǎng)分析及競(jìng)爭(zhēng)策略研究報(bào)告
- 2023年全國(guó)職業(yè)院校技能大賽-聲樂(lè)、器樂(lè)表演大賽賽項(xiàng)規(guī)程
- 光伏扶貧項(xiàng)目實(shí)施方案
- 領(lǐng)導(dǎo)干部防震知識(shí)講座
- 《義務(wù)教育學(xué)校校長(zhǎng)專業(yè)標(biāo)準(zhǔn)》解讀
- 電離輻射安全與防護(hù)基礎(chǔ)知識(shí)
- 環(huán)衛(wèi)工人消防安全知識(shí)培訓(xùn)課件
- 老年群體常見(jiàn)精神障礙識(shí)別及處理
- 2023年輔警招聘考試公共基礎(chǔ)知識(shí)試卷
- 垣曲縣隆鑫礦業(yè)有限責(zé)任公司鐵礦(伴生鈷)采礦權(quán)價(jià)款評(píng)估報(bào)告
- GB/T 27844-2011化學(xué)品聚合物在水中的溶解/析出特性
- 2023年天河區(qū)中小學(xué)生游泳比賽成績(jī)冊(cè)
評(píng)論
0/150
提交評(píng)論