用遞歸法解決問(wèn)題PPT_第1頁(yè)
用遞歸法解決問(wèn)題PPT_第2頁(yè)
用遞歸法解決問(wèn)題PPT_第3頁(yè)
用遞歸法解決問(wèn)題PPT_第4頁(yè)
用遞歸法解決問(wèn)題PPT_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、“從前有座山,山里有座廟,廟里有個(gè)老和尚給小和尚講故事,講什么呢?從前有座山,山里有座廟,廟里有個(gè)老和尚給小和尚講故事,講什么呢? 從前有座山,山里有座廟,廟里有個(gè)老和尚給小和尚講故事,講什么呢? 從前有座山,山里有座廟,廟里有個(gè)老和尚給小和尚講故事,講什么呢? 從前有座山,山里有座廟,廟里有個(gè)老和尚給小和尚講故事,講什么呢? 從前有座山,山里有座廟,廟里有個(gè)老和尚給小和尚講故事,講什么呢? 從前有座山,山里有座廟,廟里有個(gè)老和尚給小和尚講故事,講什么呢? 從前有座山,山里有座廟,廟里有個(gè)老和尚給小和尚講故事,講什么呢? 從前有座山,山里有座廟,廟里有個(gè)老和尚給小和尚講故事,講什么呢? 從前有

2、座山,山里有座廟,廟里有個(gè)老和尚給小和尚講故事,講什么呢?”這個(gè)故事有什么特點(diǎn)?自己調(diào)用自己如果在一個(gè)函數(shù)中,它自己調(diào)用了自己,這種現(xiàn)象叫遞歸調(diào)用。如果A函數(shù)調(diào)用B函數(shù),B函數(shù)又反過(guò)來(lái)調(diào)用A函數(shù),那這種現(xiàn)象也叫做遞歸調(diào)用。如果一個(gè)函數(shù)在定義時(shí),直接或間接的調(diào)用了自己,這種算法在程序設(shè)計(jì)中統(tǒng)稱為遞歸法。遞歸法一般需要遞歸法一般需要定義函數(shù)定義函數(shù)來(lái)實(shí)現(xiàn)。來(lái)實(shí)現(xiàn)。 雖然VB為我們提供了大量的標(biāo)準(zhǔn)函數(shù),但我們?cè)趯?shí)際應(yīng)用時(shí)難免有時(shí)還是找不到合意的,那就只有自己解決了,這樣為了一個(gè)特定的任務(wù)而編出來(lái)的函數(shù)叫自定義函數(shù)。Abs()、len()、date()、sqr()、msgbox()等二、自定義函數(shù)的作

3、用二、自定義函數(shù)的作用 1、可以方便的把較為復(fù)雜的問(wèn)題分解成若干、可以方便的把較為復(fù)雜的問(wèn)題分解成若干個(gè)小問(wèn)題去處理。個(gè)小問(wèn)題去處理。(公司里就是采用這種模式的。公司里就是采用這種模式的。) 2、使程序結(jié)構(gòu)清晰,層次分明,增強(qiáng)了程序、使程序結(jié)構(gòu)清晰,層次分明,增強(qiáng)了程序的可讀性。的可讀性。 一、標(biāo)準(zhǔn)函數(shù)一、標(biāo)準(zhǔn)函數(shù) VB給我們提供了一些標(biāo)準(zhǔn)函數(shù),我們不用了解這些函數(shù)如何求出來(lái)的,只管直接調(diào)用它們,挺方便的。如正弦函數(shù),余弦函數(shù),算術(shù)平方根有了這些函數(shù),我們覺(jué)得很省事。如:求1加到100的算術(shù)平方根這個(gè)程序我們可以這樣編寫(xiě):例1 dim I as integer, s as single s=0

4、 for i=1 to 100 s=s+sqr(i) next i print(“s=“,s) 在這個(gè)程序里,我們直接用到了求平方根函數(shù),至于sqr(1),sqr(2)如何求出來(lái)的我們不需過(guò)問(wèn),只管直接用它的結(jié)果便是了。 象這樣,VB給我們提供的,我們不用了解這些函數(shù)如何求出來(lái)的,只管直接調(diào)用它們的這類函數(shù)叫做標(biāo)準(zhǔn)函數(shù)。二、用戶自定義函數(shù)二、用戶自定義函數(shù)我們來(lái)看看下面一個(gè)例子:求:1!2!3!10???如果要編寫(xiě)程序,我們看到求階乘的操作要執(zhí)行10次,只不過(guò)每次所求的數(shù)不同。我們想:不至于編寫(xiě)10遍求階乘的程序吧。我們希望有一個(gè)求階乘的函數(shù),假設(shè)為JS(X),那么我們就可以這樣求這道題了:例2

5、 dim I as integer, j as integer dim s as integer s=0 for i=1 to 10 s=s+js(i) next i print(“s=”,s)現(xiàn)在的問(wèn)題是:VB沒(méi)提供JS(X)這樣一個(gè)標(biāo)準(zhǔn)函數(shù),這個(gè)程序是通不過(guò)的。如果是VB的標(biāo)準(zhǔn)函數(shù),我們可以直接調(diào)用,如前面的sqr(i),而VB提供給我們的可供直接調(diào)用的標(biāo)準(zhǔn)函數(shù)不多。沒(méi)關(guān)系,我們編寫(xiě)自己的函數(shù)!三、函數(shù)編寫(xiě)三、函數(shù)編寫(xiě)在VB中,自定義函數(shù)形式如下:PublicPrivate Function (參數(shù)列表)As 類型 局部常量、變量定義 語(yǔ)句組 函數(shù)名稱返回值End FunctionPubl

6、ic(公共的)-全局變量,指在所有程序(包括主程序和過(guò)程)中都可以使用的內(nèi)存變量Private(私人的)-局部變量,用private語(yǔ)句聲明的變量可被本窗體模塊的任何過(guò)程訪問(wèn),但其他模塊卻不能訪問(wèn)該變量參數(shù)列表:參數(shù)列表: ByVal | ByRef 變量名變量名 ( ) As 類型類型 表示該參數(shù)按值傳遞不會(huì)修改變量原來(lái)的值表示該參數(shù)按地址傳遞會(huì)直接改變?cè)瓉?lái)的變量值例3 編寫(xiě)一求階乘的函數(shù)。我們給此函數(shù)取一名字就叫JS。FUNCTION js(n as integer) as integer dim I as integer, s as integer s=1 for i=1 to n s=

7、s*i next i js=s end自定義函數(shù)的調(diào)用,可以有三種格式:變量=函數(shù)名稱(參數(shù))Call 函數(shù)名稱(參數(shù))函數(shù)名稱 參數(shù)Private Function daxiao(a As Integer, b As Integer)Dim t As IntegerIf a b Then t = a a = b b = tEnd IfEnd FunctionPrivate Sub Command1_Click()Dim x As Integer, y As Integerx = 5y = 9Call daxiao(x, y)Print x=; x, “y=; yEnd SubPrivate

8、Sub Command1_Click()Dim a As Integer, b As Integera = 5b = 9Daxiao a, bPrint a=; a, b=; bEnd Sub在VB中,說(shuō)自定義函數(shù),就不能不提子過(guò)程.子過(guò)程的定義如下:Public|private (參數(shù)列表)局部常量 變量定義End sub子過(guò)程和函數(shù)的本質(zhì)是一樣的,在VB中往往將函數(shù)看做特殊的子過(guò)程子過(guò)程與函數(shù)的區(qū)別:關(guān)鍵字:函數(shù)(Function) 子過(guò)程(sub)返回值:函數(shù)(可以有) 子過(guò)程(無(wú))調(diào)用格式:變量=函數(shù)名稱(參數(shù))Call 函數(shù)名稱(參數(shù))函數(shù)名稱 參數(shù)函數(shù)子過(guò)程Call 函數(shù)名稱(參數(shù)

9、)函數(shù)名稱 參數(shù)1月2月3月4月5月Recursion(1)=1Recursion(2)=1Recursion(3)=Recursion(2)+Recursion(1)Recursion(4)=Recursion(3)+Recursion(2)Recursion(5)=Recursion(4)+Recursion(3)圖圖3-25 函數(shù)遞歸調(diào)用關(guān)系函數(shù)遞歸調(diào)用關(guān)系例例1:1:假設(shè)有如下假設(shè)有如下subsub過(guò)程過(guò)程: :Sub s(x as single,y as single)Sub s(x as single,y as single) t=x t=x x=t/y x=t/y y=t mod

10、 y y=t mod yEnd subEnd subPrivate sub command1_click()Private sub command1_click() dim a as single dim a as single dim b as single dim b as single a=5 a=5 b=4 b=4 s a,b s a,b 函數(shù)名稱函數(shù)名稱 參數(shù)參數(shù)Print a,bPrint a,bEnd subEnd sub例例2:在窗體上畫(huà)一個(gè)名稱為在窗體上畫(huà)一個(gè)名稱為command1的命令按鈕的命令按鈕,然后編寫(xiě)然后編寫(xiě)如下通用過(guò)程和命令按鈕的事件過(guò)程如下通用過(guò)程和命令按鈕的事件過(guò)程:Private function fun(byval m as integer)If m mod 2 =0 then fun=2 else fun=1 end if End functionPrivate sub command1_click() dim I as integer,s as integer s=0 For I=1 to 5 s=s+fun(I)Next IPrint sEnd sub例例3:單擊命令按鈕時(shí)單擊命令按鈕時(shí),下列程序的執(zhí)行結(jié)果為下列程序的執(zhí)行結(jié)果為( )Private sub comma

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論