Дано:
F (F (n)) = n
F (F (n + 2) + 2) = n
F (0) = 1
где n - неотрицательное целое число. F (129) =?
Как мы можем программно решить такие типы функциональных уравнений? Моим языком программирования является Python.
Дано:
F (F (n)) = n
F (F (n + 2) + 2) = n
F (0) = 1
где n - неотрицательное целое число. F (129) =?
Как мы можем программно решить такие типы функциональных уравнений? Моим языком программирования является Python.
Функциональные уравнения, в их наиболее общих терминах, действительно очень тяжелые. Не случайно, что в каждом международном конкурсе математики есть один из них, обычно выглядящий как невинный, как тот, который вы написали. Методы их решения варьируются от простой индукции до бесконечномерного банахово-пространственного анализа, а общий программный подход к их решению очень маловероятен.
В этом конкретном случае здесь имеется прямолинейный подход:
Предположим, что для любых двух целых чисел 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
Итак, ваше решение - но механического алгоритма для решения каких-либо вариаций просто не существует.
Основываясь на том, что сказали @ivancho и @aaronasterling, я смог написать эту программу, которая должна сделать трюк:
def f(n):
if not n:
return 1
else:
return f(n-2)-2
>>> f(4)
-3
Комментарий, если это не то, что вы после