Отказ от рекурсии - PullRequest
       20

Отказ от рекурсии

0 голосов
/ 06 октября 2009

Я написал рекурсивную функцию. По какой-то причине он просто не будет звонить сам по себе после первого пробега. Он просто берет следующий элемент из цикла, не углубляясь вглубь. Я использую Visual Studio 10, и мне не хватает сна.

public IEnumerable<string> GeneratePath(int depth)
{
    int presentDepth = depth;
    char currentPosition = this.workingPath[presentDepth];
    presentDepth++;

    foreach (char nextPosition in this.moveTable.GetPossibleNextPositions(currentPosition))
    {
        this.workingPath[presentDepth] = nextPosition;

        if (presentDepth < (ChessPiece.targetDepth - 1))
        {
            Console.WriteLine("At least this wasn't ignored:{0}", new string(this.workingPath));
            this.GeneratePath(presentDepth);
        }
        else
            yield return new string(this.workingPath);
    }
}

1 Ответ

8 голосов
/ 06 октября 2009
this.GeneratePath(presentDepth);

должно быть

foreach (var i in this.GeneratePath(presentDepth))
{
  yield return ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...