递归的方法,形式如下:
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不好意思啊~我的水平有限,看看不太懂您写的代码,包括findit的这个函数。其实好像这个问题没有您写得那么“高深”啊~ 这个练习是在我们学完了循环语句之后的,您能不能用循环语句给我做一遍呢~辛苦您啦~或者您给我说说思路吧,我就是不知道该怎么样在每一步有两种选择方案时进行随机选择。很抱歉,对这方面我也不是很熟,没法用循环来表示遍历。期待其他高手来解答!要纠正一点,这问题不是随机,而是遍历,就是说所有的情况都要列举出来。用递归来表示遍历思路上最简单,就是实现的时候有点麻烦,可能要设置一些临时变量和标记变量。函数findit()的思路就是:先假设要走的台阶数还有13,对每种走法进行尝试。如果还有台阶,则调用它本身,对于走1步和走2步分别进行尝试。如果可走的台阶为0,则说明得到一种走法,<0则说明走法错误(比如只剩1个台阶时走2步),>0说明还有台阶,继续调用过程本身。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
关于VB的枚举法和递推问题
关于VB的枚举法和递推问题
最近在学VB,碰到类似二元递推的问题一直找不到合适的表达方式.比如有一题,上十三个台阶的,规定一次只能上1个或者2个台阶,求所有的上台阶方案组合及其总数.递推式很显然为n=n+1 或者 n= n+2,但是要怎么样让计算机随机(或者是按某种顺序)地去选择加上去的是1或者是2,又或是更多的呢?
类似地还有一根钢管长多少多少,然后有两种截取方法,问是截取后剩下的最少的截取方案等等..纠结就在于那个每次变化的取值要可以在2个之中任意取,又要都取到~脑子有点糊涂,
还有,一个小小的问题,要怎么样让7个变量在7个数值中任意选取,但两两互不重复呢?(打个比方而已)要构造function要怎么构造啊~
最近在学VB,碰到类似二元递推的问题一直找不到合适的表达方式.比如有一题,上十三个台阶的,规定一次只能上1个或者2个台阶,求所有的上台阶方案组合及其总数.递推式很显然为n=n+1 或者 n= n+2,但是要怎么样让计算机随机(或者是按某种顺序)地去选择加上去的是1或者是2,又或是更多的呢?
类似地还有一根钢管长多少多少,然后有两种截取方法,问是截取后剩下的最少的截取方案等等..纠结就在于那个每次变化的取值要可以在2个之中任意取,又要都取到~脑子有点糊涂,
还有,一个小小的问题,要怎么样让7个变量在7个数值中任意选取,但两两互不重复呢?(打个比方而已)要构造function要怎么构造啊~
其他人气:144 ℃时间:2019-10-30 22:59:42
优质解答
我来回答
类似推荐
猜你喜欢
- 1甲乙丙三名工人加工相同的零件,甲4小时加工5个,乙5小时加工6个,丙7小时加工7个,那个工人的工作效率最
- 2描写形状的成语
- 3朱自清的《春风》中的“春风图”与林斤澜的《春风》内容和写法有何不同
- 4一椭圆与一双曲线有公共焦点,且离心率之和为2,已知椭圆方程为25x^2+9y^2=1,求双曲
- 5关于电计量单位的换算
- 61.当2=2,b=3及当a=-2,b=-3和当a=-2,b=-3时,分别计算a²-2ab+b²和﹙a-b﹚²的值.
- 7millions of有这个用法吗?请详细解答millions of 、million of、million、millions的区别
- 8李老师骑单车从家到外地,去时用了3小时,平均每小时行60千米,回来时用了2小时,他回来时的速度是多少?
- 9航天飞机的作用是什么?
- 10以“两只小虫都淹没在老松树的黄色的泪珠里.”仿写拟人句