遞歸的方法,形式如下:
function findit(varStep)
call findit(1)
call findit(2)
end function
具體代碼(VB6下測試通過)
窗體上放一個(gè)文本框(Name=txtResult,MultiLine=True)和按鈕(name=cmdCalc)
Private pCount As Long
Private strResult As String
Private Sub cmdCalc_Click()
pCount = 0
strResult = ""
Call FindIt(13,1,"")
Call FindIt(13,2,"")
txtResult.Text = strResult '顯示結(jié)果
cmdCalc.Caption = Format(pCount)
pCount = 0
strResult = ""
End Sub
Private Function FindIt(nValue As Integer,nStep As Integer,strPath As String) As Boolean
Dim nValTemp As Integer
Dim strCurPath As String
nValTemp = nValue - nStep'下一步可用的臺階
strCurPath = strPath & Format(nStep)'記錄這一步的走法(1或者2)
Select Case nValTemp
Case Is < 0 '嘗試失敗,直接退出
FindIt = False
Exit Function
Case 0 '成功獲得一種走法,記錄走法,計(jì)數(shù)加1
pCount = pCount + 1
strResult = strResult & IIf(Len(strResult) > 0,vbCrLf,"") & strCurPath
FindIt = True
Exit Function
Case Else '還沒走完
Call FindIt(nValTemp,1,strCurPath)
Call FindIt(nValTemp,2,strCurPath)
End Select
End Function不好意思啊~我的水平有限,看看不太懂您寫的代碼,包括findit的這個(gè)函數(shù)。其實(shí)好像這個(gè)問題沒有您寫得那么“高深”啊~ 這個(gè)練習(xí)是在我們學(xué)完了循環(huán)語句之后的,您能不能用循環(huán)語句給我做一遍呢~辛苦您啦~或者您給我說說思路吧,我就是不知道該怎么樣在每一步有兩種選擇方案時(shí)進(jìn)行隨機(jī)選擇。很抱歉,對這方面我也不是很熟,沒法用循環(huán)來表示遍歷。期待其他高手來解答!要糾正一點(diǎn),這問題不是隨機(jī),而是遍歷,就是說所有的情況都要列舉出來。用遞歸來表示遍歷思路上最簡單,就是實(shí)現(xiàn)的時(shí)候有點(diǎn)麻煩,可能要設(shè)置一些臨時(shí)變量和標(biāo)記變量。函數(shù)findit()的思路就是:先假設(shè)要走的臺階數(shù)還有13,對每種走法進(jìn)行嘗試。如果還有臺階,則調(diào)用它本身,對于走1步和走2步分別進(jìn)行嘗試。如果可走的臺階為0,則說明得到一種走法,<0則說明走法錯(cuò)誤(比如只剩1個(gè)臺階時(shí)走2步),>0說明還有臺階,繼續(xù)調(diào)用過程本身。Private Sub Command1_Click()ClsDim a%(0 To 13), i%a(0) = 0a(1) = 1i = 2Do While i <= 13a(i) = a(i - 1) + a(i - 2)i = i + 1LoopPrint "上臺階的方案共有"; a(13); "種"End Sub
關(guān)于VB的枚舉法和遞推問題
關(guān)于VB的枚舉法和遞推問題
最近在學(xué)VB,碰到類似二元遞推的問題一直找不到合適的表達(dá)方式.比如有一題,上十三個(gè)臺階的,規(guī)定一次只能上1個(gè)或者2個(gè)臺階,求所有的上臺階方案組合及其總數(shù).遞推式很顯然為n=n+1 或者 n= n+2,但是要怎么樣讓計(jì)算機(jī)隨機(jī)(或者是按某種順序)地去選擇加上去的是1或者是2,又或是更多的呢?
類似地還有一根鋼管長多少多少,然后有兩種截取方法,問是截取后剩下的最少的截取方案等等..糾結(jié)就在于那個(gè)每次變化的取值要可以在2個(gè)之中任意取,又要都取到~腦子有點(diǎn)糊涂,
還有,一個(gè)小小的問題,要怎么樣讓7個(gè)變量在7個(gè)數(shù)值中任意選取,但兩兩互不重復(fù)呢?(打個(gè)比方而已)要構(gòu)造function要怎么構(gòu)造啊~
最近在學(xué)VB,碰到類似二元遞推的問題一直找不到合適的表達(dá)方式.比如有一題,上十三個(gè)臺階的,規(guī)定一次只能上1個(gè)或者2個(gè)臺階,求所有的上臺階方案組合及其總數(shù).遞推式很顯然為n=n+1 或者 n= n+2,但是要怎么樣讓計(jì)算機(jī)隨機(jī)(或者是按某種順序)地去選擇加上去的是1或者是2,又或是更多的呢?
類似地還有一根鋼管長多少多少,然后有兩種截取方法,問是截取后剩下的最少的截取方案等等..糾結(jié)就在于那個(gè)每次變化的取值要可以在2個(gè)之中任意取,又要都取到~腦子有點(diǎn)糊涂,
還有,一個(gè)小小的問題,要怎么樣讓7個(gè)變量在7個(gè)數(shù)值中任意選取,但兩兩互不重復(fù)呢?(打個(gè)比方而已)要構(gòu)造function要怎么構(gòu)造啊~
其他人氣:253 ℃時(shí)間:2019-10-30 22:59:42
優(yōu)質(zhì)解答
我來回答
類似推薦
- VB編程,枚舉算法,求高手速度!
- 甲乙兩數(shù)和是50 ,甲數(shù)的3倍于乙數(shù)的4倍的和是165,甲乙兩數(shù)是多少?
- 罐頭廠要給水果罐頭做一種圓柱形的包裝盒,已知這個(gè)罐頭盒的底面半徑為5cm,高6cm,同時(shí)要在盒的外面貼一
- 等腰三角形腰和底邊長的比是3:2,若底邊長為6,則底邊上的高是多少?腰上的高是多少?
- 填成語啊..平( )無( ) ,形( )影( ) ,()云()霧
- 一個(gè)圓柱高9分米,側(cè)面積226.08平方分米,它的底面積是多少平方分米?
- 已知cosa=1/7,cos(a+b)=13/14.且a,b屬于(0,派/2)
- 2.3g鈉由原子變成離子時(shí),失去的電子數(shù)為0.1NA(要過程)
- 新陳代謝旺盛是什么意思
- the write would receive an extra 1000 a year.Hewouldget 1000 a year是選more 還是over
- 英語非謂語動詞題目,要解析,
- 請以“【嫦娥一號】發(fā)射的場面扣人心弦”為中心寫一段話.
猜你喜歡
- 1一個(gè)德語問題
- 2隨機(jī)變量的概率密度問題
- 3一條褲子,原價(jià)120元,提價(jià)30%以后,又因過季降價(jià)30%,現(xiàn)在售價(jià)是多少?
- 4夜間,可看到池水能倒影路燈,若池水深2米,路燈距水面8米燈在水面的像到燈的距離應(yīng)
- 51.將一個(gè)長方體平均截成5段,每段長5分米,表面積增加了120平方分米.原來長方體的體積是多少立方分米?
- 6調(diào)節(jié)水龍頭,讓水一滴滴流出,在下方放一盤子,調(diào)節(jié)盤子高度,使水滴碰到盤子時(shí),恰有另一水滴開始下落,而空中還有一滴正在下落的水滴,測出水龍頭到盤子的高度為h(m),從第一
- 7冬天窗戶上為什么會有水蒸氣
- 8質(zhì)量為m的木塊放在水平傳送帶上,隨傳送帶一起向前運(yùn)動,木塊與傳送帶間的動摩擦因數(shù)為μ,則下列說法正
- 9再勇敢些,用英文怎么說.be more modest,對嗎,
- 10已知命題p:方程x2+mx+1=0有兩個(gè)不等的負(fù)實(shí)根,命題q:方程4x2+4(m-2)x+1=0無實(shí)根,若p或q為真,p且q為假,則實(shí)數(shù)m的取值范圍是( ?。?A.(1,2]∪[3,+∞) B.(1,2)∪(3,+∞) C.(1,2]
- 11(1)若不等式組(1)x+ab 的解集是-2
- 1264噸硫最能能制取多少硫酸?