實(shí)例3.8使用可選參數(shù)
編寫一個(gè)用于計(jì)算兩個(gè)實(shí)數(shù)的和以及平均值的子過(guò)程,該子過(guò)程具有一個(gè)可選參數(shù),在調(diào)用子過(guò)程時(shí),如果不提供與可選參數(shù)對(duì)應(yīng)的實(shí)參,或?qū)崊⒌闹禐?,則在窗體上只打印兩個(gè)數(shù)的和;如果提供了一個(gè)不為0實(shí)參,則在窗體上還將打印出兩個(gè)數(shù)的平均值。
具有可選參數(shù)的子過(guò)程的代碼如下:
Private Sub(x As Single,y As Single,Optional n As Boolean=0)
Dim s As Single,A As Single
s=x=y
A=S/2
If n=False Then
Print“總和為:”& S
Else
Print“總和為:”& S
Print“平均值為:”& A
End If
End Sub
在窗體的Click事件過(guò)程中調(diào)用子過(guò)程Sum.代碼如下:
Private Sub Form_Click()
Print “不提供與可選參數(shù)對(duì)應(yīng)的實(shí)參”
Sun 6,9
Print “提供與可選參數(shù)對(duì)應(yīng)的實(shí)參,并且實(shí)參為0:”
Sun 6,9,0
Print 空行
Print “提供與可選參數(shù)對(duì)應(yīng)的實(shí)參,并且實(shí)參不為0:”
Sun 6,9,1
End Sub
運(yùn)行程序,單擊窗體,結(jié)果如圖3.25所示。
遞歸是推理和問(wèn)題求解的一種強(qiáng)有力方法,原因在于許多對(duì)象,特別是數(shù)學(xué)研究對(duì)象具有遞歸的結(jié)構(gòu)。簡(jiǎn)單地說(shuō),如果通過(guò)一個(gè)對(duì)象自身的結(jié)構(gòu)來(lái)描述或部分描述該對(duì)象就稱為遞歸。最簡(jiǎn)單而易于理解的一個(gè)例子是階乘的遞歸定義。如果以函數(shù)f(n〕表示自然數(shù)n的階乘的道,則有定義:
遞歸定義使我們能夠用有限的語(yǔ)句描述一個(gè)無(wú)窮的集合。本例描述一個(gè)無(wú)窮的集合只用了兩個(gè)語(yǔ)句。
VB程序設(shè)計(jì)語(yǔ)言允許一個(gè)過(guò)程體有調(diào)用自身的語(yǔ)句,稱為遞歸調(diào)用。也允許調(diào)用另一過(guò)程,而該過(guò)程又反過(guò)來(lái)調(diào)用本過(guò)程,稱為間接遞歸調(diào)用。這種功能為求解具有遞歸結(jié)構(gòu)的問(wèn)題提供了強(qiáng)有力手段,使程序語(yǔ)言的描述與問(wèn)題的自然描述完全一致,因而使程序易于理解,易于保證和維護(hù)。例如,對(duì)于上面的n階乘的遞歸定義,可以寫出相應(yīng)的VB函數(shù)過(guò)程,如下面的實(shí)例3.9.這個(gè)過(guò)程的推理(計(jì)算)路線與原來(lái)函數(shù)的(遞歸)數(shù)學(xué)定義完全一致。
實(shí)例3.9求n階乘的VB函數(shù)過(guò)程
Private Function F(byval n As Integer) As Integer
If n=1 Then
F=1
Else
F=n*F(n-1)
End If
End Function
讓我們來(lái)跟蹤這個(gè)程序的計(jì)算過(guò)程,令n=4調(diào)用這個(gè)函數(shù),用下面的形式來(lái)表示遞歸求解的過(guò)程:
(1)F(4)=4*F(3) n=4調(diào)用函數(shù)過(guò)程F(3)
(2)F(3)=3*F(2) n=3調(diào)用函數(shù)過(guò)程F(2)
(3)F(2)=2*F(1) n=2調(diào)用函數(shù)過(guò)程F(1)
(4)F(1)=1 n=1求的F(1)的值
(5)F(2)=2*1=2 回歸,n=2,求得F(2)的值
(6)F(3)=3*2=6 回歸,n=3,求的F(3)的值
(7)F(4)=4*6=24 回歸,n=3,求得F(4)的值
上面第1步到第4步求出F(1)=1的步驟稱為遞推,從第4步到第7步求出F(4)=4*6的步驟稱為回歸。
從這個(gè)例子可以看出,遞歸求解有兩個(gè)條件:
給出遞歸終止的條件和相應(yīng)的狀態(tài)。
在本例中遞歸終止的條件是n=1,狀態(tài)是F(1)=1.
2.給出遞歸的表述形式,并且這種表述要向著終止條件變化,在有限步內(nèi)達(dá)到終止條件。
在本例中,當(dāng)n>l時(shí),給出遞歸的表述形式為F(n)=n*F(n-1).函數(shù)值F(n)用函數(shù)值F(n-1)來(lái)表示。參數(shù)的值向減少的方向變化,在第n步出現(xiàn)終止條件n=1。
相關(guān)推薦:2010年9月計(jì)算機(jī)等級(jí)考試成績(jī)查詢時(shí)間匯總
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |