
Функция Аккермана Требуется вычислить значение A(m,n) — где A это функция Аккермана. Функция
Аккермана определяется рекурсивно для неотрицательных целых чисел m и n следующим образом: A(m,n)=n+1, при m=0 A(m,n)=A(m−1,1), при m>0, n=0 A,(m,n)=A(m−1,A(m,n−1), при m>0, n>0 Входные данные Даны два целых числа m и n (0 ≤m≤ 3, 0 ≤n≤ 10). Выходные данные Выведите одно число — A(m,n). Примеры Ввод Вывод 1 1 3

Ответы на вопрос

Ответ:
https://www.cyberforum.ru/python-beginners/thread1606572.html#post14975973
(Мое)
оттуда код можно скопировать нормально
а так вот -
def A(m, n):
z = []
z.append([1,2,3,4,5,6,7,8,9,10,11])
z.append([2,3,4,5,6,7,8,9,10,11,12])
z.append([3,5,7,9,11,13,15,17,19,21,23])
z.append([5,13,29,61,125,253,509,1021,2045,4093,8189])
return z[m][n]
a,b = map(int, input().split())
print(A(a, b))



Функция Аккермана является очень быстро растущей функцией и может привести к большому количеству рекурсивных вызовов, что может вызвать проблемы с производительностью для больших значений m и n. Однако, для ваших входных данных (0 ≤ m ≤ 3, 0 ≤ n ≤ 10), вы можете вычислить значение A(m, n) следующим образом:
pythondef ackermann(m, n):
if m == 0:
return n + 1
elif m > 0 and n == 0:
return ackermann(m - 1, 1)
elif m > 0 and n > 0:
return ackermann(m - 1, ackermann(m, n - 1))
# Входные данные
m, n = map(int, input().split())
# Вычисление и вывод результата
print(ackermann(m, n))
Когда вы вводите 1 1
, программа вернет 3
, что соответствует примеру в вашем вопросе.


Похожие вопросы
Топ вопросов за вчера в категории Информатика








Последние заданные вопросы в категории Информатика
-
Математика
-
Литература
-
Алгебра
-
Русский язык
-
Геометрия
-
Английский язык
-
Химия
-
Физика
-
Биология
-
Другие предметы
-
История
-
Обществознание
-
Окружающий мир
-
География
-
Українська мова
-
Информатика
-
Українська література
-
Қазақ тiлi
-
Экономика
-
Музыка
-
Право
-
Беларуская мова
-
Французский язык
-
Немецкий язык
-
МХК
-
ОБЖ
-
Психология
-
Физкультура и спорт
-
Астрономия
-
Кыргыз тили
-
Оʻzbek tili