我需要使用java API在z3
中定义一个函数,该API将目录作为输入并递归删除其所有内容。由于z3
不支持递归函数,有没有办法表达这样的功能?
答案 0 :(得分:0)
如果要将递归转换为迭代,则需要跟踪堆栈中方法的状态。在这种特殊情况下,状态是一个文件。所以,方法是这样的:
private void walkTreeUsingSimulation(Stack<File> stack) {
while (!stack.isEmpty()) {
File f = stack.pop();
System.out.println(f.getAbsolutePath());
if(f.isDirectory()) {
File[] files = f.listFiles();
for (File file : files) {
stack.push(file);
}
}
}
}
通过按下初始文件夹来创建堆栈。在这种情况下,我只是打印文件的路径。但是,为了能够删除文件,您希望首先遍历叶节点。最简单的可能是将整个收集到列表中并使用列表删除文件。