public static bool FindNextLeg(Route[] returnArray, int count, City destination, City currentCity) { for (int i = 0; i < currentCity.Connections.Length; i++) { if (CanContinueSearch(returnArray, currentCity.Connections[i].GetCity())) { if (count == returnArray.Length) { throw new Exception("No Valid Route Found"); } returnArray[count] = currentCity.Connections[i]; if(currentCity.Connections[i].GetCity().Equals(destination)) { return true; } else { if(FindNextLeg(returnArray, count + 1, destination, currentCity.Connections[i].GetCity())) { return true; } } } } return true; }
public static int FindNextLegDistance(Route[] returnArray, int count, City destination, City currentCity) { for (int i = 0; i < currentCity.Connections.Length; i++) { if (CanContinueSearch(returnArray, currentCity.Connections[i].GetCity())) { if (currentCity.Connections[i].GetCity().Equals(destination)) { return returnArray[count].GetDays(); } else { if (FindNextLeg(returnArray, count + 1, destination, returnArray[i].GetCity())) { return returnArray[count].GetDays() + FindNextLegDistance(returnArray, count + 1, destination, currentCity.Connections[i].GetCity()); } } } } return 0; }
private static bool CanContinueSearch(Route[] returnArray, City city) { for (int i = 0; i < returnArray.Length; i++) { if (returnArray[i].GetCity().Equals(city.GetCityName())) { return false; } } return true; }