如何检查堆栈的所有元素作为递归的停止条件

时间:2019-05-26 08:48:25

标签: java recursion

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

该函数作为输入

  • 图的状态
  • 消息列表(按顺序)和
  • 图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);
}

0 个答案:

没有答案