Can I simplify this recursive grid search?
It seems to me that most of the body of the first GetNeighbours is extraneous. Wouldn't this be enough ?

public List&lt;Cell&lt;int&gt;&gt; GetNeighbours(Cell&lt;int&gt; cell, Direction direction, int neighboursToGet)
{
    var neighbours = new List&lt;Cell&lt;int&gt;&gt;();

    GetNeighbours(cell, direction, neighboursToGet, neighbours);

    return neighbours;
}


Also, it is redundant to accept neighbours as a read/write parameter and to return it. However, if you are going to do it, you could as well write:

public List&lt;Cell&lt;int&gt;&gt; GetNeighbours(Cell&lt;int&gt; cell, Direction direction, int neighboursToGet)
{
    return GetNeighbours(cell, direction, neighboursToGet, new List&lt;Cell&lt;int&gt;&gt;());
}