Я написал рекурсивную функцию. По какой-то причине он просто не будет звонить сам по себе после первого пробега. Он просто берет следующий элемент из цикла, не углубляясь вглубь. Я использую 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);
}
}