首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VB >

小弟刚学递归,请教一个简单的递归有关问题

2012-01-10 
小弟刚学递归,请问一个简单的递归问题~比如我要在D:/abc下面递归建立3层的文件夹,每个文件夹里面建3个,再

小弟刚学递归,请问一个简单的递归问题~
比如我要在   D:/abc   下面递归建立3层的文件夹,每个文件夹里面建3个,再在这3个里面分别再建3个。。。一直递归建到第3层

就像。。。大概思路。。
1.Mkdir   "D:/abc "
2.做一个SUB,   dgMkFold(FoldDir   as   string,n   as   integer)
      FoldDir   就是在这个目录下建立递归,n就是为了标明建到了第几层,比如这里初始n=3
。。然后判断。。。比如if   n> 1   然后继续递归。。。

主要卡在的地方就是,不知道如何往下读文件夹,用filename=Dir(FoldDir,vbDirectory)之类的也很难读出来
还有一个问题,就不知道建完之后应该如何回溯,我想我想要的应该是深度优先算法把。。

[解决办法]
什么叫做“不知道如何往下读文件夹”?

另外
这种问题深度优先广度优先都是一样的。回溯也不用管,创建一个递归函数,只要边界处理得当,函数调用完了之后会自动回到上一层。
[解决办法]
Option Explicit

Sub dgMkFold(FoldDir As String, n As Integer)
If n > = 3 Then Exit Sub '递归返回条件
On Error Resume Next
'创建子目录
MkDir (FoldDir & "\1 ")
MkDir (FoldDir & "\2 ")
MkDir (FoldDir & "\3 ")
'递归调用, 创建子目录的子目录
dgMkFold FoldDir & "\1 ", n + 1
dgMkFold FoldDir & "\2 ", n + 1
dgMkFold FoldDir & "\3 ", n + 1
On Error GoTo 0
End Sub

Private Sub Command1_Click()
'创建主目录
MkDir "d:\aaa "
dgMkFold "d:\aaa ", 1
End Sub



[解决办法]
楼上正解
深度优先广度优先和递归无关啊,lz应该先好好理解算法的思想,再来写程序
我接分~

热点排行