반품이 있습니다. return
사건이 발생한 후에는 "this will not print"
에 도달해서는 안되는 행을 볼 수 있습니다.내 수익은 실행을 중지하지 않습니다.
무슨 일 이니?
여기에 ... 전체 절차는,이 순간에 거친 사본의이다 :
private void greedySearch (String lookForNode)
{
// Note: Available vars
// reqStartNode
// reqEndNode
// Search through entire tree looking for...
System.out.println("Searching through entire tree looking for "+lookForNode);
for (int i = 0; i < treeList.size(); i++) {
Data currentNode = treeList.get(i);
// ... reqStartNode
if (currentNode.getNodeName().equals(lookForNode))
{
System.out.println("Found matching node. currentNode.getNodeName=" + currentNode.getNodeName()+" lookForNode="+lookForNode);
// Check to see if there's any children?
if (currentNode.childrenList.size() > 0)
{
// Find smallest child by node
double smallestHeuristic = currentNode.childrenList.get(0).getHeuristic();
String smallestNode = currentNode.childrenList.get(0).getNodeName();
for (int ii = 1; ii < currentNode.childrenList.size(); ii++)
{
if (currentNode.childrenList.get(ii).getHeuristic() < smallestHeuristic)
{
smallestHeuristic = currentNode.childrenList.get(ii).getHeuristic();
smallestNode = currentNode.childrenList.get(ii).getNodeName();
}
}
// Check to see if smallest child by node is reqEndNode
if (smallestNode == reqEndNode)
{
System.out.println("FOUND GOAL "+smallestNode);
// Quit because we found the answer
return;
}
// Expand that node
else
{
greedySearch (smallestNode);
}
}
// No children, we've reached the end
else
{
System.out.println("We've reached the end at "+currentNode.getNodeName());
// Quit because we've reached no further children to expand
return;
}
System.out.println("This will not print");
}
else
{
System.out.println("Skipped node "+currentNode.getNodeName());
}
}
System.out.println("FINISHED SEARCH");
}
편집 :
나는 깨달았다 올바른 솔루션은 return
후를하고 있었다 이렇게 재귀 프로 시저를 호출합니다.
greedySearch (smallestNode);
// Quit because we are now going recursive, our job here is done
return;
내 OUPUT는 지금 : 이상한
Searching through entire tree looking for S Skipped node A Skipped node B Skipped node C Skipped node D Skipped node E Skipped node F Skipped node G Skipped node G Found matching node. currentNode.getNodeName=S lookForNode=S Searching through entire tree looking for A Found matching node. currentNode.getNodeName=A lookForNode=A Searching through entire tree looking for B Skipped node A Found matching node. currentNode.getNodeName=B lookForNode=B Searching through entire tree looking for C Skipped node A Skipped node B Found matching node. currentNode.getNodeName=C lookForNode=C We've reached the end at C
나는 당신의 코드가 다른 블록에 들어 가지 않을 것이라고 생각한다. –
이것은 재귀 적 방법입니까? – jlordo
전체 코드를 보여주십시오. –