StackOverflowException, когда я вызываю одну и ту же функцию много раз - PullRequest
0 голосов
/ 19 марта 2019

Я создаю функцию, которая создает точку в определенных координатах, которая вызывает себя, перемещаясь к каждой из кардинальных точек (до заданного предела).

У меня ошибка StackOverflowException, когда более 5000 позицийсохранено.

Более просто: я создал точки с координатами, перемещающимися только на север и по-прежнему выдающими ту же ошибку

* NorthLimit, LatitudeDeviation и LongitudeDeviation являются константами.

public void CreatePosition(decimal latitude, decimal longitude)
{
    boolean end = true;

    Positions.Add(new Position(latitude, longitude));

    if (NorthLimit > (latitude + LatitudeDeviation))
    {
      CreatePosition(latitude + LatitudeDeviation, longitude);
      end = false;
    }

    if (end == true)
    {
      // It ends :)
    }
}

Какие меры я должен предпринять?

1 Ответ

4 голосов
/ 19 марта 2019

Отвечая на ваш отредактированный вопрос, где вы просто двигаетесь на север.

Вам нужно будет преобразовать ваш рекурсивный алгоритм в итеративный. Это может быть довольно сложно - у Эрика Липперта есть фантастическая серия блогов на разные техники ( часть 1 , часть 2 ) - но в вашем случае это просто.

public void CreatePosition(decimal latitude, decimal longitude)
{
    Positions.Add(new Position(latitude, longitude))

    for (decimal currentLatitude = latitude + LatitudeDeviation;
         currentLatitude <= NorthLimit;
         currentLatitude += LatitudeDeviation)
    {
        Positions.Add(new Position(currentLatitude , longitude));
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...