그래서 BFS 알고리즘에서 노드를 추적하는 C++ 코드가 있습니다. 그것은 조금 다음과 같습니다 그러나무한 루프가 무한 루프입니까?
typedef std::map<int> MapType;
bool IsValuePresent(const MapType& myMap, int beginVal, int searchVal)
{
int current_val = beginVal;
while (true)
{
if (current_val == searchVal)
return true;
MapType::iterator it = myMap.find(current_val);
assert(current_val != myMap.end());
if (current_val == it->second) // end of the line
return false;
current_val = it->second;
}
}
의 while (true)
나에게 의심 ... 보인다. 나는이 코드가 작동한다는 것을 알고 있으며 논리적으로 그것이 작동해야한다는 것을 알고있다. 그러나 while
에 몇 가지 조건이 있어야한다는 느낌을 떨칠 수는 없지만 실제로 가능한 유일한 방법은 bool
변수를 사용하여 완료했는지 여부입니다. 걱정하지 말아야할까요? 아니면 정말 나쁜 형태입니다.
편집 :이 문제를 해결할 수있는 방법이 있다는 것을 알아 주셔서 감사합니다. 그러나, 나는 아직도 다른 유효한 경우가 있는지 알고 싶다.
이 또한 여기에 약간 논의되었다. http://stackoverflow.com/questions/885908/ – Copas
잘 모르겠습니다. 무한 루프가 나쁜 형태입니까? –