Ответ 1
Функциональные уравнения, в их наиболее общих терминах, действительно очень тяжелые. Не случайно, что в каждом международном конкурсе математики есть один из них, обычно выглядящий как невинный, как тот, который вы написали. Методы их решения варьируются от простой индукции до бесконечномерного банахово-пространственного анализа, а общий программный подход к их решению очень маловероятен.
В этом конкретном случае здесь имеется прямолинейный подход:
Предположим, что для любых двух целых чисел m, n F (m) = F (n) = k. Но тогда m = F (F (m)) = F (k) = F (F (n)) = n: поэтому m = n и F никогда не принимает одинаковое значение на двух разных входах. Но мы знаем, что F (F (n)) = n = F (F (n + 2) +2) - поэтому F (n) и F (n + 2) +2 должны быть одинакового числа, F (n + 2) == F (n) - 2 == F (n-2) - 4 =.... Теперь мы знаем F (0) = 1, поэтому F (1) = F (F (0)) = 0. Но тогда F (129) = F (127) - 2 = F (125) - 4 =... = F (1) - 128 = -128
Итак, ваше решение - но механического алгоритма для решения каких-либо вариаций просто не существует.