首页 > 解决方案 > 如何检查堆栈的所有元素作为递归的停止条件

问题描述

我对递归函数中的停止条件有疑问。

该函数作为输入

函数遍历图并在--初始状态(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);
}

标签: javarecursion

解决方案


推荐阅读