Если вам нужно часто делать такие вещи, другой способ - создать вспомогательный интерфейс и метод:
public static interface Recursable<T, U> {
U apply(T t, Recursable<T, U> r);
}
public static <T, U> Function<T, U> recurse(Recursable<T, U> f) {
return t -> f.apply(t, f);
}
И затем напишите:
Function<Integer, Double> fact = recurse(
(i, f) -> 0 == i ? 1 : i * f.apply(i - 1, f));
(В то время как я делал это в общих чертах с ссылочными типами, вы также можете создавать примитивные версии).
Это заимствует из старого трюка в Little Lisper для создания неназванных функций.
Я не уверен, что когда-либо сделаю это в производственном коде, но это интересно ...
Вот хороший пример: Brainnet 1 - Нейронный Проект Netwok - С Иллюстрацией И Кодом - Изучает Нейронную сеть, Программирующую Шаг за шагом, И Разрабатывает Простую Систему Обнаружения Почерка , который продемонстрирует некоторые практические применения программирования нейронной сети.
Существует действительно хорошая статья о CodeProject: Распознавание изображений с Нейронными сетями .
Интересное учебное руководство доступно здесь . Надо надеяться, это будет действовать как введение для Вас.
Вот онлайн-курс по программированию нейронных сетей на C #.