我对递归函数中的停止条件有疑问。
该函数作为输入
该函数遍历图形并在 -初始状态(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);
}