Я пытаюсь построить строку рекурсивно, но это не совсем работаетПостроение строки рекурсивно в Java
мой код выглядит следующим образом
public void UpdatePrintList(ArrayList<Node> closedList, ArrayList<Node> openList)
{
if(count <= iterations)
{
String line1 = "";
for(int i = 0; i < closedList.size(); i++)
{
if(i > 0)
{
line1 = line1 + "-";
}
line1 = line1 + closedList.get(i).GetMovement();
}
line1 = line1 + " " + closedList.get(closedList.size()-1).GetG() + " " + closedList.get(closedList.size()-1).GetHeuristic() + " " + closedList.get(closedList.size()-1).GetF();
printList.add(line1);
//*****************************************************************
String line2 = "OPEN ";
for(int i = 0; i < openList.size(); i++)
{
line2 = FindEarlierNode(openList.get(i), line2);
}
System.out.println(line2);
}
count++;
}
private String FindEarlierNode(Node varNode, String varString)
{
if(varNode.OpenedBy() == null)
{
varString += varNode.GetMovement() + "-";
}
else
{
FindEarlierNode(varNode.OpenedBy(), varString);
}
varString = varString + varNode.GetMovement() + "-";
return varString;
}
Странным является то, что я знаю, что это, если заявление
if(varNode.OpenedBy() == null)
{
varString += varNode.GetMovement() + "-";
}
работает правильно, поэтому функция действительно достигает самого раннего узла. Но это не добавляет к строке. Код запускается, но ничего не возвращает. GetMovement возвращает только одну или две строки символов. Вывод должен выглядеть следующим образом:
ОТКРЫТЫЙ S-R S-RD S-D
Но вместо этого он выглядит следующим образом:
ОТКРЫТЫЙ D-DL-L-
Может кто-нибудь помочь?
Верхняя часть вашего кода кажется отрезанной, поэтому я боюсь, что мы не сможем помочь, пока вы не исправите свой вопрос. –
верхняя часть добавлен. – user2787386
Не используйте верхний регистр в имени метода, вместо FindEarlierNode используйте findEarlierNode – jfcorugedo