Подтвердить что ты не робот

Программно программные решения

Дано:

F (F (n)) = n

F (F (n + 2) + 2) = n

F (0) = 1

где n - неотрицательное целое число. F (129) =?

Как мы можем программно решить такие типы функциональных уравнений? Моим языком программирования является Python.

4b9b3361

Ответ 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

Итак, ваше решение - но механического алгоритма для решения каких-либо вариаций просто не существует.

Ответ 2

Основываясь на том, что сказали @ivancho и @aaronasterling, я смог написать эту программу, которая должна сделать трюк:

def f(n):
    if not n:
        return 1
    else:
        return f(n-2)-2

>>> f(4)
-3

Комментарий, если это не то, что вы после