版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
高級(jí)語(yǔ)言程序設(shè)計(jì)
§4過(guò)程抽象一函數(shù)
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
過(guò)程抽象
本章的內(nèi)容結(jié)構(gòu)和閱讀要點(diǎn)
-函數(shù)
■函數(shù)(§4.2)
■變量的局部性(§4.3)
■遞歸函數(shù)(§4.4)
■函數(shù)名重載(§4.5)
■內(nèi)聯(lián)函數(shù)(§4.6)
■條件編譯(§4.8)
2
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
過(guò)程抽象
-函數(shù)
§4.3變量的局部性
3
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
全局變量
部性
全局變量與■全局變量是指定義在函數(shù)外部的變量,它們能被所
局部變量有函數(shù)使用。
變量的存儲(chǔ)
分配■全局變量可以定義在函數(shù)外的任何地方。如果在使
C++程序的用一個(gè)全局變量時(shí)未見(jiàn)到它的定義,則在使用前要
多模塊結(jié)構(gòu)對(duì)該全局變量進(jìn)行聲明。
標(biāo)識(shí)符的作
用域#incIude<iostream>
usingnamespacestd;voidf()
名空間intx(0);//全局變量{externintx;//全局變量聲明
voidf(){x++;}
voidg(){x++;}
X=o
intmain()nt
{f0;g0;x++;
cout?x?endI;
return0;
4
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
局部變量
部性
全局變量與局部變量是指在復(fù)合語(yǔ)句中定義的變量,它們只能
局部變量在定義它們的復(fù)合語(yǔ)句(包括內(nèi)層復(fù)合語(yǔ)句)中使
變量的存儲(chǔ)
分配用。
C++程序的函數(shù)體中定義的變量只能在定義它們的函數(shù)體內(nèi)使
多模塊結(jié)構(gòu)
用。void千()
標(biāo)識(shí)符的作{inty;//局部變量
用域y++;//正確
x++;//錯(cuò)誤
名空間
)
voidmain()
{intx;
x++;//正確
y++;//錯(cuò)誤
while(){x++;//正確
5
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
局部變量
部性
全局變量與局部變量的定義可以放在復(fù)合語(yǔ)句的任何位置,但
局部變量是在復(fù)合語(yǔ)句中局部變量定義之前不能使用它們。
變量的存儲(chǔ)
分配函數(shù)的形式參數(shù)也可以看成是局部變量,它們只能
C++程序的在相應(yīng)的函數(shù)中使用。
多模塊結(jié)構(gòu)
標(biāo)識(shí)符的作voidmain()
用域{……
x++;//錯(cuò)誤
名空間
intx;
while(){x++;//正確
}
)
6
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
變量的存儲(chǔ)分配(生存期)
部性
全局變量與■通常把程序運(yùn)行時(shí)一個(gè)變量占有內(nèi)存空間的時(shí)間段
局部變量稱為該變量的生存期。
變量的存儲(chǔ)
分配■C++把變量的生存期分為靜態(tài)、自動(dòng)和動(dòng)態(tài)三種:
C++程序的?具有靜態(tài)生存期的變量,它們的內(nèi)存空間從程序開(kāi)始執(zhí)
多模塊結(jié)構(gòu)行時(shí)就進(jìn)行分配,直到程序結(jié)束時(shí)才收回它們的空間。
標(biāo)識(shí)符的作(全局變量具有靜態(tài)生存期)
用域
?具有自動(dòng)生存期的變量,它們的內(nèi)存空間在程序執(zhí)行到
名空間
定義它們的復(fù)合語(yǔ)句(包括函數(shù)體)時(shí)才分配;當(dāng)定義
它們的復(fù)合語(yǔ)句執(zhí)行結(jié)束時(shí),它們的空間將被收回。(
局部變量和函數(shù)參數(shù)一般具有自動(dòng)生存期)
?具有動(dòng)態(tài)生存期的變量,其內(nèi)存空間用new操作分配、用
delete操作收回。(動(dòng)態(tài)變量具有動(dòng)態(tài)生存期)
7
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
存儲(chǔ)分配(生存期)
部性
全局變量與在定義局部變量時(shí),可以為它們加上存儲(chǔ)類修飾符
局部變量來(lái)指出它們的生存期。
變量的存儲(chǔ)
分配?auto:自動(dòng)存儲(chǔ)類,局部變量的默認(rèn)存儲(chǔ)類,具有自動(dòng)
生存期。
C++程序的
多模塊結(jié)構(gòu)?static:靜態(tài)存儲(chǔ)類,具有靜態(tài)生存期。
標(biāo)識(shí)符的作?register:寄存器存儲(chǔ)類(建議編譯程序?qū)⒕植孔兞康目?/p>
用域
間分配在CPU的寄存器中),具有自動(dòng)生存期。
名空間
static存儲(chǔ)類的局部變量的作用是:它能在函數(shù)調(diào)
用時(shí)獲得上一次調(diào)用結(jié)束時(shí)該局部變量的值,即
static存儲(chǔ)類使得某些局部變量的值能在函數(shù)多次
調(diào)用之間得以保留。
8
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
存儲(chǔ)分配(生存期)一舉例
部性
全局變量與#inoIude<iostream>
局部變量usingnamespacestd;
變量的存儲(chǔ)intz=0;
voidf()
分配
{intx=0;
C++程序的staticinty=0;
多模塊結(jié)構(gòu)x++;y++;z++;
cout<X"x="x<<",y=,z?y<<",z=""zendl;
標(biāo)識(shí)符的作}
用域intmain()
{f();
名空間z++;
f();
return0;
}
9
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
存儲(chǔ)分配(生存期)
部性
全局變量與■程序的內(nèi)存分配:
局部變量
?靜態(tài)數(shù)據(jù)區(qū)(staticdata):用于全局變量、static存儲(chǔ)類
變量的存儲(chǔ)的局部變量以及常量的內(nèi)存分配;
分配
?代碼區(qū)(code):存放所有的函數(shù)代碼;
C++程序的
多模塊結(jié)構(gòu)棧區(qū)(stack):用于auto存儲(chǔ)類的局部變量、函數(shù)的形
標(biāo)識(shí)符的作參以及函數(shù)調(diào)用時(shí)有關(guān)信息的內(nèi)存分配;
用域堆區(qū)(heap):用于動(dòng)態(tài)變量的內(nèi)存分配。
名空間
■在C++中如果定義變量時(shí)沒(méi)有進(jìn)行初始化,對(duì)于全
局變量和static存儲(chǔ)類的局部變量,編譯程序?qū)㈦[
式地將它們初始化為0;對(duì)于其他變量不進(jìn)行初始
化。
10
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
C++程序的多模塊結(jié)構(gòu)
部性
全局變量與在邏輯上,一個(gè)C++程序由一些全局函數(shù)、全局常
局部變量量、全局變量/對(duì)象以及類的定義構(gòu)成,其中必須
變量的存儲(chǔ)
分配有且僅有一個(gè)名字為main的全局函數(shù)。
C++程序的在物理上,我們通常可以按照某種規(guī)則對(duì)構(gòu)成C++
多模塊結(jié)構(gòu)
程序的各個(gè)邏輯單位(全局函數(shù)、全局常量/變量/
標(biāo)識(shí)符的作
用域?qū)ο?、類等)的定義進(jìn)行分組,分別把它們放在若
名空間干個(gè)源文件中。
11
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
C++程序的多模塊結(jié)構(gòu)
部性
全局變量與■在程序設(shè)計(jì)中,模塊是一個(gè)可單獨(dú)編譯的程序單
局部變量
位。一個(gè)模塊一般包含兩個(gè)部分:接口和實(shí)現(xiàn)。
變量的存儲(chǔ)
分配■在C++中,一個(gè)模塊通常由兩個(gè)源文件構(gòu)成:.h
C++程序的文件(用于存放模塊的接口定義)和.cpp文件(
多模塊結(jié)構(gòu)
用于存放模塊的實(shí)現(xiàn))。
標(biāo)識(shí)符的作
用域■文件包含命令:
名空間#includev文件名〉:在系統(tǒng)指定的目錄下尋找指定的文
件;
?#include“文件名”:先在包含葫句必一命令的源文件所
在的目錄下查找指定文件,然后再在系統(tǒng)指定的目錄下
尋找指定文件。
12
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
程序的多模塊結(jié)構(gòu)一舉例
部性C++
全局變量與■MDstddef.h
局部變量
變量的存儲(chǔ)■define.h
分配■Agentitem.h
C++程序的
多模塊結(jié)構(gòu)■Agectltem.cpc
標(biāo)識(shí)符的作
用域
名空間
13
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
標(biāo)識(shí)符的作用域
部性
全局變量與標(biāo)識(shí)符的作用域(scope)是指一個(gè)定義了的標(biāo)
局部變量
識(shí)符的有效范圍,即該標(biāo)識(shí)符所標(biāo)識(shí)的程序?qū)嶓w
變量的存儲(chǔ)
分配能被訪問(wèn)的程序段。
C++程序的標(biāo)識(shí)符的作用域一方面對(duì)定義了的標(biāo)識(shí)符的使用
多模塊結(jié)構(gòu)
進(jìn)行限制,另一方面也隱含著:作用域不相交的
標(biāo)識(shí)符的作
用域兩個(gè)標(biāo)識(shí)符可以同名。
名空間C++把標(biāo)識(shí)符的作用域分為:局部作用域、全局
作用域、文件作用域、函數(shù)作用域、函數(shù)原型作
用域、類作用域和名空間作用域。
14
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
局部作用域
部性
全局變量與局部作用域(localscope)是指在函數(shù)定義或復(fù)
局部變量
合語(yǔ)句中,從標(biāo)識(shí)符的定義點(diǎn)開(kāi)始到函數(shù)定義或
變量的存儲(chǔ)
分配復(fù)合語(yǔ)句結(jié)束之間的程序段。
C++程序的C++中的局部常量名、局部變量名/對(duì)象名以及函
多模塊結(jié)構(gòu)
數(shù)的形參名具有局部作用域。
標(biāo)識(shí)符的作
1:voidf(inty)
用域
2:{y++;〃正確■y的作用域:1?8行
名空間3:x++;〃錯(cuò)誤■x的作用域:4?8行
4:intx;
5:x++;〃正確
6:doublex;〃錯(cuò)誤,w墓定義
7:chary;〃錯(cuò)誤,宜:定義■y的作用域:9~12行
8:}
9:voidg(doubley)//確■x的作用域:10T2行
10:{doublex;//正確
11:f⑴;〃正確
12:)
15
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
局部作用域的嵌套
部性
全局變量與如果在一個(gè)標(biāo)識(shí)符的局部作用域中包含其他復(fù)合
局部變量
語(yǔ)句(內(nèi)層復(fù)合語(yǔ)句),并且在該內(nèi)層復(fù)合語(yǔ)句
變量的存儲(chǔ)
分配中定義了一個(gè)同名的不同實(shí)體,則外層定義的標(biāo)
C++程序的識(shí)符的作用域應(yīng)該是從其作用域中扣除內(nèi)層同名
多模塊結(jié)構(gòu)標(biāo)識(shí)符的作用域之后得到的作用域。
標(biāo)識(shí)符的作
1:voidf()
用域
2:■intx(第3行)的作用域:
名空間3:intx;?3?12行
4:x++;
5:while(!x)■doublex(第8行)的作用域:
6:?8~1。行
7:x++;
8:doublex;-內(nèi)層作用域覆蓋了外層作用域。
9:x=1.0;
10:}
11:x++;
12:}
16
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
全局作用域
部性
全局變量與全局作用域(globalscope)是指構(gòu)成C++程序的
局部變量
所有源文件。
變量的存儲(chǔ)
分配全局變量名/對(duì)象名、全局常量名和全局類名的作
C++程序的用域一般具有全局作用域,它們?cè)谡麄€(gè)程序中可
多模塊結(jié)構(gòu)
用。
標(biāo)識(shí)符的作
用域#incIude<iostream>
usingnamespacestd;
名空間intp(5),q(7);//全局變量
voidf(){p++;q++;}
voidmain()
{P+二q;
f();
}
17
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
全局作用域
部性
全局變量與如果在某個(gè)局部作用域中定義了與某個(gè)全局標(biāo)識(shí)
局部變量符同名的標(biāo)識(shí)符,則該全局標(biāo)識(shí)符的作用域應(yīng)扣
變量的存儲(chǔ)
分配掉與之同名的局部標(biāo)識(shí)符的作用域。
C++程序的1:intx;
多模塊結(jié)構(gòu)2:voidf()x(第1行)的作用域:
標(biāo)識(shí)符的作3:{……所有源文件
4:intx;〃局部變量x
用域
5:x++;x(第4行)的作用域:
名空間6:■■■■■■?4~7行
7:)
18
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
全局作用域
部性
全局變量與■在局部標(biāo)識(shí)符的作用域中若要使用與其同名的全
局部變量局標(biāo)識(shí)符,則需要使用全局域選擇符(作用域運(yùn)
變量的存儲(chǔ)
分配算符::)對(duì)全局標(biāo)識(shí)符進(jìn)行修飾。
程序的
C++1:intx;
多模塊結(jié)構(gòu)2:voidf()
標(biāo)識(shí)符的作3:{……
4:intx;〃局部變量x
用域
5:x++;
名空間6:::x++;//全局變量X
7:)
19
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
全局作用域
部性
全局變量與在使用全局標(biāo)識(shí)符時(shí),若該標(biāo)識(shí)符的定義點(diǎn)在其
局部變量他源文件中或在本源文件中使用點(diǎn)之后,則在使
變量的存儲(chǔ)
用前需要聲明它們。
分配//fiIe2.cpp
C++程序的//fi1e1.cppinty=0;
多模塊結(jié)構(gòu)intx=1;voidf(){
externinty;y++;
標(biāo)識(shí)符的作intmain0{x+=z;〃錯(cuò)誤
)
用域x+二y;
cout?z;〃錯(cuò)誤doubIez=2.0;
名空間)voidg()
{cout?z;}
通常把全局標(biāo)識(shí)符的聲明放在某個(gè).h文件中,在
需要使用這些全局標(biāo)識(shí)符的源文件中用/include
命令把聲明文件包含進(jìn)來(lái)。
20
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
全局作用域
部性
全局變量與■在C++程序中,有時(shí)會(huì)出現(xiàn)下面的錯(cuò)誤:
局部變量
聲明了一個(gè)未定義的全局標(biāo)識(shí)符;
變量的存儲(chǔ)
聲明了一個(gè)存在兩個(gè)或兩個(gè)以上定義的全局標(biāo)識(shí)符;
分配
C++程序的■上述錯(cuò)誤在編譯的過(guò)程中不會(huì)發(fā)現(xiàn),在聯(lián)接的過(guò)
多模塊結(jié)構(gòu)程中會(huì)提示錯(cuò)誤:
標(biāo)識(shí)符的作
用域?unresolvedexternalsymbol:
名空間Xalreadydefinedinfile:YYY
21
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
文件作用域
部性
全局變量與文件作用域(filescope)是指單獨(dú)的源文件。
局部變量
在全局標(biāo)識(shí)符的定義中加上static修飾符,則該全
變量的存儲(chǔ)
分配局標(biāo)識(shí)符就成為具有文件作用域的標(biāo)識(shí)符,它們
C++程序的只能在定義它們的源文件中使用。
多模塊結(jié)構(gòu)
在函數(shù)外用const定義的常量名具有文件作用域。
標(biāo)識(shí)符的作
用域//fiIe1.cpp
intx=1;//全局變量
名空間externinty;
voidf(){//fiIe1.cpp
x+二y;staticintx=1;//具有文件作用域的變量
)constintL=10;//具有文件作用域的常量
externinty;
staticvoidf()//具有文件作用域的函數(shù)
(
x+二y;
)
22
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
文件作用域&全局作用域
部性
全局變量與一般情況下,具有全局作用域的標(biāo)識(shí)符主要用于
局部變量表示被程序各個(gè)模塊共享的程序?qū)嶓w;而具有文
變量的存儲(chǔ)
分配件作用域的標(biāo)識(shí)符用于標(biāo)識(shí)在一個(gè)模塊內(nèi)部共享
C++程序的的程序?qū)嶓w。
多模塊結(jié)構(gòu)
標(biāo)識(shí)符的作
用域
名空間
23
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
函數(shù)作用域
部性
全局變量與函數(shù)作用域(functionscope)是指由整個(gè)函數(shù)定
局部變量義所構(gòu)成的程序段。
變量的存儲(chǔ)
分配語(yǔ)句標(biāo)號(hào)是唯一具有函數(shù)作用域的標(biāo)識(shí)符,可以
C++程序的在定義它們的函數(shù)體中任何地方訪問(wèn)它們。
多模塊結(jié)構(gòu)
函數(shù)作用域與局部作用域的區(qū)別:
標(biāo)識(shí)符的作
用域函數(shù)作用域包括整個(gè)函數(shù),而局部作用域是從定義點(diǎn)開(kāi)
名空間始到函數(shù)定義或復(fù)合語(yǔ)句結(jié)束;
在函數(shù)體中,一個(gè)語(yǔ)句標(biāo)號(hào)只能定義一次;
voidf(intx)
inty;?語(yǔ)句標(biāo)號(hào)的作用域可以和同名的其他標(biāo)識(shí)符的作用域重
gotox;
gotoy;疊。
x:y二x;
y:x二y;
)
24
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
函數(shù)原型作用域
部性
全局變量與函數(shù)原型作用域(functionprototypescope)是指
局部變量用于函數(shù)聲明的函數(shù)原型,其中的形式參數(shù)名(
變量的存儲(chǔ)
分配如果給出)的作用域從函數(shù)原型開(kāi)始到函數(shù)原型
C++程序的結(jié)束。
多模塊結(jié)構(gòu)
標(biāo)識(shí)符的作voidf(intx,doubley)//其中x和y的作用域從“(”開(kāi)始到
用域“)”結(jié)束
名空間
25
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
名空間(namespace)
部性
全局變量與對(duì)于一個(gè)多文件構(gòu)成的程序,有時(shí)會(huì)面臨一個(gè)問(wèn)
局部變量題:在一個(gè)源文件中要用到兩個(gè)分別在其他文件
變量的存儲(chǔ)
分配中定義的同名的全局實(shí)體。
C++程序的//fiIe1.cpp//fiIe2.cpp
多模塊結(jié)構(gòu)
voidf(....)voidf(....)
標(biāo)識(shí)符的作
用域
名空間)}
//main.cpp
intmain()
{f();//這里要使用fiIe1.cpp中定義的f
f();//這里要使用file2.cpp中定義的f
)
26
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
名空間(namespace)
部性
全局變量與名空間是給一組程序?qū)嶓w的定義取一個(gè)名字,使
局部變量之構(gòu)成一個(gè)作用域一名空間作用域。
變量的存儲(chǔ)
分配在一個(gè)名空間中定義的全局標(biāo)識(shí)符,其作用域?yàn)?/p>
C++程序的該名空間。當(dāng)在一個(gè)名空間外部需要使用該名空
多模塊結(jié)構(gòu)
間中定義的全局標(biāo)識(shí)符時(shí),可以用該名空間的名
標(biāo)識(shí)符的作
用域字來(lái)修飾。
名空間
27
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
函數(shù)名空間(namespace)舉例
//fiIe1.h//fiIe1.cpp
函數(shù)的定義
namespaceA(namespaceA{
函數(shù)的調(diào)用externintx;intx=1;
voidf();voidf(){x++;}
函數(shù)的參數(shù)voidg();voidg(){f0;X-=2;}
傳遞))
//fiIe2.h//fiIe2.cpp
namespaceB{
namespaceB(
externdoubIex;doubIex=1.0;
voidf();voidf(){x+=2;}
voidg();voidg();{x-=2;}
}1
//main,cpp
intmain0
A::f0;
B::f0;
A::x=0;
28
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
名空間(namespace)
部性
全局變量與using聲明
局部變量
?using〈名空間,:使用某個(gè)名空間上的程序?qū)嶓w時(shí),如果
變量的存儲(chǔ)這些程序?qū)嶓w的名與其他全局實(shí)體的名不沖突,可在使
分配
用前使用using聲明。
C++程序的
多模塊結(jié)構(gòu)也可以分別對(duì)某個(gè)名空間中的程序?qū)嶓w采用using聲明。
標(biāo)識(shí)符的作
//main,cpp
用域intmain()//main.cpp
{usingnamespaceA;intmain()
名空間{usingA::f;
f0;〃fiIe1中定義的f
B::f0;f0;〃fiIe1中定義的f
x=0;//fiIe1中定義的xB::f0;
A::x=0;//fiIe1中定義的x
}
29
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
變量的局
名空間(namespace)
部性
全局變量與■無(wú)名名空間
局部變量
?對(duì)于不是定義在某個(gè)名空間中的全局程序?qū)嶓w,可以把
變量的存儲(chǔ)它們看作是定義在一個(gè)全局的無(wú)名空間中。
分配
可以把文件作用域的程序?qū)嶓w定義成一個(gè)局部于各個(gè)源
C++程序的
多模塊結(jié)構(gòu)文件的無(wú)名名空間。
標(biāo)識(shí)符的作namespace{
用域intx,y;<Ostaticintx,y;
名空間
■std名空間
?C++標(biāo)準(zhǔn)庫(kù)中的程序?qū)嶓w定義在std名空間中。
30
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
過(guò)程抽象
-函數(shù)
§4.4
31
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
遞歸函數(shù)遞歸函數(shù)的定義
遞歸函數(shù)的■如果一個(gè)函數(shù)在其函數(shù)體中直接或間接地調(diào)用了自
定義己,則該函數(shù)稱為遞歸函數(shù)。直接調(diào)用自己的稱為
遞歸函數(shù)舉
例直接遞歸,間接調(diào)用自己的稱為間接遞歸。
■在定義遞歸函數(shù)時(shí),一定要對(duì)兩種情況給出描述:
?遞歸條件。遞歸條件指出何時(shí)進(jìn)行遞歸調(diào)用,屬于問(wèn)題求
解的一般情況。
?結(jié)束條件。結(jié)束條件指出何時(shí)不需遞歸,它描述了問(wèn)題求
解的特殊情況或基本情況,在該情況下不需遞歸就能得出
結(jié)果。
32
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
遞歸函數(shù)遞歸函數(shù)實(shí)例
遞歸函數(shù)的■例:求用單第n個(gè)fibonacci數(shù)。
定義f0(/?=1)
遞歸函數(shù)舉fib(n)=1(,7=2)
例
fib(n-2)+fib(n-i){n>3)
#inoIude<iostream>
usingnamespacestd;
intmain()
{intn;
cin?n;
intfib_1二0;
intfib_2=0;
for(inti=1;i<=n;i++)
{inttemp=fib_1+fib_2;
fib_1二fib_2;"
fib_2=temp;
)
cout??n<<”個(gè)斐波那契數(shù)是:"*fib_2?endl;
return0;
□
33
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
遞歸函數(shù)遞歸函數(shù)實(shí)例
遞歸函數(shù)的■例:求用單第n個(gè)fibonacci數(shù)。
定義f0(/?=1)
遞歸函數(shù)舉fib(n)=1(,7=2)
例
fib(n-2)+fib(n-i){n>3)
#inoIude<iostream>
usingnamespacestd;
intfib(intn)
{if(n-0)return0;〃結(jié)束條件
elseif(n=1)〃結(jié)束條件
return1;
eIse
returnfib(n-2)+fib(n-1);//遞歸條件
}
intmain()
{intn;
cin?n;
cout。"第"6n?”個(gè)斐波那契數(shù)是:“"fib(n)?endI;
return0;
}
34
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
遞歸函數(shù)遞歸函數(shù)實(shí)例
遞歸函數(shù)的■例:求解n!。
定義
#inoIude<iostream>
遞歸函數(shù)舉usingnamespacestd;
例intfactor(intn)
{if(n=0)return1;
returnn*factor(n-1);
}
intmain()
{intn;
cin?n;
cout?n?”的階乘是:“<<factor(n)?endI;
return0;
}
35
高級(jí)語(yǔ)言程序設(shè)計(jì)?2005春季
遞歸函數(shù)遞歸與循
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 財(cái)會(huì)類檔案工作規(guī)范
- 2024屆云南省硯山縣二中高三第三次聯(lián)考數(shù)學(xué)試題試卷(海南新高考卷)LI-HAIN
- 可愛(ài)的小海獅課件
- 2024年廣元駕校資格證模擬考試題
- 2024年重慶客運(yùn)資格證培訓(xùn)考試題2024年答案
- 2024年白山考客運(yùn)資格證試題題庫(kù)軟件
- 2025屆湖北省宜昌市長(zhǎng)陽(yáng)縣一中生物高三第一學(xué)期期末聯(lián)考模擬試題含解析
- 2024年信陽(yáng)c1客運(yùn)資格證考試
- 2024年云南客運(yùn)應(yīng)用能力考試題庫(kù)
- 2025屆河南省滎陽(yáng)市第二高級(jí)中學(xué)高二數(shù)學(xué)第一學(xué)期期末達(dá)標(biāo)檢測(cè)試題含解析
- 招標(biāo)代理機(jī)構(gòu)內(nèi)部監(jiān)督管理制度
- 2022版義務(wù)教育(信息科技)課程標(biāo)準(zhǔn)(附課標(biāo)解讀)
- 2024年榴蓮行業(yè)分析報(bào)告及未來(lái)發(fā)展趨勢(shì)
- IPD(集成產(chǎn)品開(kāi)發(fā))入門教材課件
- 物業(yè)小區(qū)人員安全培訓(xùn)方案
- 超導(dǎo)炭黑行業(yè)前景分析
- Python數(shù)據(jù)分析挖掘與可視化第2版董付國(guó)課后參考答案
- 班主任工作中的心理效應(yīng)
- 稅務(wù)稽查工作規(guī)程、案件復(fù)查、稽查員制度等部分考試題
- 幼兒園主題班會(huì)小小導(dǎo)游帶你暢游童年課件
- 新媒體視聽(tīng)節(jié)目制作 第三章 新媒體視聽(tīng)節(jié)目的“策劃之道”
評(píng)論
0/150
提交評(píng)論