关于VB的枚举法和递推问题最近在学VB,碰到类似二元递推的问题一直找不到合适的表达方式.比如有一题,上十三个台阶的,规定一次只能上1个或者2个台阶,求所有的上台阶方案组合及其总数.递
来源:学生作业帮助网 编辑:六六作业网 时间:2024/12/22 19:38:50
关于VB的枚举法和递推问题最近在学VB,碰到类似二元递推的问题一直找不到合适的表达方式.比如有一题,上十三个台阶的,规定一次只能上1个或者2个台阶,求所有的上台阶方案组合及其总数.递
关于VB的枚举法和递推问题
最近在学VB,碰到类似二元递推的问题一直找不到合适的表达方式.比如有一题,上十三个台阶的,规定一次只能上1个或者2个台阶,求所有的上台阶方案组合及其总数.递推式很显然为n=n+1 或者 n= n+2,但是要怎么样让计算机随机(或者是按某种顺序)地去选择加上去的是1或者是2,又或是更多的呢?
类似地还有一根钢管长多少多少,然后有两种截取方法,问是截取后剩下的最少的截取方案等等..纠结就在于那个每次变化的取值要可以在2个之中任意取,又要都取到~脑子有点糊涂,
还有,一个小小的问题,要怎么样让7个变量在7个数值中任意选取,但两两互不重复呢?(打个比方而已)要构造function要怎么构造啊~
关于VB的枚举法和递推问题最近在学VB,碰到类似二元递推的问题一直找不到合适的表达方式.比如有一题,上十三个台阶的,规定一次只能上1个或者2个台阶,求所有的上台阶方案组合及其总数.递
递归的方法,形式如下:
function findit(varStep)
call findit(1)
call findit(2)
end function
具体代码(VB6下测试通过)
窗体上放一个文本框(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 '显示结果
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 '成功获得一种走法,记录走法,计数加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