Ровно два хода? Если уже на первом ходу угрожает, что тогда?
Ровно для n ходов:
static (int, int)[] HorseMoves = { (1, 2), (-1, 2), (1, -2), (-1, -2), (-2, 1), (-2, -1), (2, 1), (2, -1) };
public static bool HorseCanTake((int, int) p, (int, int) c, int n)
{
bool Result = n == 0 && p == c; //remove n == 0 to count in intermediate results
if (n == 0)
return Result;
foreach (var m in HorseMoves)
{
var NewPosition = (p.Item1 + m.Item1, p.Item2 + m.Item2);
Result |= HorseCanTake(NewPosition, c, n - 1);
}
return Result;
}
Добавь проверку на одинаковые поля перед вызовом метода, если это необходимо, чтобы он сам себе не угрожал.