使用递归查找长度(没有Dijkstra)

时间:2015-04-10 23:10:58

标签: java recursion

仅仅因为这是练习递归的练习,我的教授给出了代码来找到迷宫中所有解决方案的坐标。这是有意义的,我将所有这些解决方案添加到ArrayList solutions我现在想要在递归之外创建一个for循环,并遍历列表,找到最小的坐标长度,并更新因此,就像你会找到integer中最小的ArrayList一样。

但是,它将空ArrayList<Coord>s添加到ArrayList solutions,因此,当我尝试获取第一个元素时,它会与空元素进行比较,因此它找不到最短的长度。有谁知道如何获得解决方案,并将它们添加到我的ArrayList ??

这是给我的递归代码:

 else{     
 ArrayList<ArrayList<Coord>> solutions = new ArrayList<Array List<Coord>>();
    for(int i=0; i<directions.length; i++){ 
    Coord nextSpot = currentSpot.addTo(directions[i]);e
    if(nextSpot.validSpot(maze)) 
      if(!newPath.contains(nextSpot)){ 

        ArrayList<Coord> solution = //The recursive call
                         solve(newPath,nextSpot,goal,maze);
        if(solution != null)
        {
          solutions.add(solution);

        }

    }//ifs
  }//for

这是我尝试找到最小路径的地方:

  ArrayList<Coord> smallestPath = (ArrayList<Coord>)solutions.get(0);
  ArrayList currentPath = new ArrayList();

  for(int i = 0; i < solutions.size(); i++){
    currentPath = (ArrayList)solutions.get(i);
    if(currentPath.size() < smallestPath.size()){
      smallestPath = currentPath;
    }
    System.out.println("currentPath is : " + currentPath);
  }
   return smallestPath;

}//else (recursive case)

0 个答案:

没有答案