java - 如何检查堆栈的所有元素作为递归的停止条件
问题描述
我对递归函数中的停止条件有疑问。
该函数作为输入
- 图的状态
- 消息列表(按顺序)和
- 图 g.
函数遍历图并在--初始状态(s0):如果所有出边都不等于列表的第一个元素,则递归停止,--如果至少有一个边等于第一个列表的元素然后它获取该边并移动到下一个状态(s1)以检查是否所有到达状态(s1)的出边不等于列表的第二个元素(如果它们都不相等, 停止并增加计数器。如果其中一个相等,则移动到下一个状态,并对列表中的第三个状态和第三个元素执行相同的操作...等)。
停止条件是所有边都不等于列表的给定元素(按顺序)。这意味着如果我在k级的状态中发现一条边不等于列表的第k个元素,我应该继续检查相同状态(k级)的其他边,直到我确保没有一个等于该元素然后我停止并增加一个计数器。我提供了我到目前为止所做的事情,但它不起作用!
能否请你帮忙。谢谢
void DFSUtil(State s, LinkedHashSet<Message> listm, Graph g ){
State stak2 = new Stack<State>();
int counting=0;
Iterator<Message> m = listm.iterator();
for(Edges e1 : g.edgesOutOf(s)){
stak2.push(e1);
}
while(!stak2.empty())
e2=stak2.pop();
if(!m.equals(e2.expectedInput)){
counting++;
}Else{
listm.remove(m);
State newState =new State(e2.getTarget());
DFSUtil(newState, listm,g);
}
System.out.println(counting);
}
解决方案
推荐阅读
- mysql - SQL 回滚不会回到上次提交
- javascript - 访问多维数组
- memory - 将为混合模型计算分配的 RAM 预测
- python - 在python中将打印值格式化为百分比
- sql-server - Microsoft SQL Server Management Studio 选择数据库语法错误
- javascript - 删除txt文件中某个字符后的所有内容
- laravel - WhereHas 关于多态关系
- json - Golang 解析输出以读取密钥(terraform 输出)
- java - 为什么在我的测试程序之后 JVM 有更多的可用内存?
- aem - AEM 6.3 查询生成器 - 如何搜索不区分大小写?