在递归函数中增加计数器是否可以?
好多方法,简单一点就是你传个参数,说明调用者的层数。那么被调用者就是+1了。
能够举个简单例子
@jay_jie:
sub Recursive(byval TreeLevel as integer)
Treelevel+=1
Messagebox.Show(TreeLevel)
Recursive(TreeLevel)
end sub
@爱编程的大叔: 比如现在D盘下面有N个目录,我只想取每个目录下面最多三层的文件,后面的都不需要
1 BOOL res = fileFind.FindFile(strPath); 2 while (res) 3 { 4 hTreeDirectory = treeItem; 5 res = fileFind.FindNextFileW(); 6 if (fileFind.IsDirectory() && !fileFind.IsDots()) 7 { 8 CString strPath = fileFind.GetFilePath(); 9 CString strTitle = fileFind.GetFileName(); 10 ShowTreeDirectory(strPath, hTreeDirectory); 11 } 12 }
这样写肯定是把D盘下所有目录都找出来了,有什么办法?
@jay_jie: if TreeLevel>3 then exit sub
@爱编程的大叔: 这样你会发现只能找出第一个目录下的三个文件
@jay_jie: 哦,我以为你会懂的变通一下的。
你传进去后,不要修改,自己定义一个变量+1,然后判断,这样就不会影响到上一层的TreeLevel值了。
sub Recursive(byval TreeLevel as integer)
dim myTreelevel=TreeLevel+1
Messagebox.Show(myTreeLevel)
Recursive(myTreeLevel)
end sub
在函数体外定义一个静态成员变量,在函数体内对静态成员变量++。
对递归方法添加一个参数 leve