Last active
January 18, 2022 07:54
-
-
Save evgeniyworkbel/537f474fcbba5860b78cc58ca54b5515 to your computer and use it in GitHub Desktop.
Курс "Введение в программирование", Hexlet.io
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const ackermann = (m, n) => { | |
if (m === 0) { | |
return n + 1; | |
} | |
if (m > 0 && n === 0) { | |
return ackermann (m - 1, 1); | |
} | |
return ackermann(m - 1, ackermann(m, n - 1)); | |
}; | |
export default ackermann; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const ackermann = (m, n) => { | |
if (m === 0) { | |
return n + 1; | |
} | |
if (n === 0) { | |
return ackermann(m - 1, 1); | |
} | |
return ackermann(m - 1, ackermann(m, n - 1)); | |
}; | |
export default ackermann; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Функция Аккермана — простой пример вычислимой функции, которая не является примитивно рекурсивной. | |
Она обозначается A(m,n), принимает два неотрицательных целых числа в качестве параметров и возвращает натуральное число. | |
Эта функция растёт очень быстро, например, число A(4,4) настолько велико, что количество цифр в порядке этого числа многократно | |
превосходит количество атомов в наблюдаемой части Вселенной. | |
Функция Аккермана определяется рекурсивно для неотрицательных целых чисел m и n следующим образом: | |
= n + 1 при m = 0; | |
A(m, n) = A(m - 1, 1) при m > 0, n = 0; | |
= A(m - 1, A(m, n - 1) при m > 0, n > 0; | |
Задание: | |
Реализуйте и экспортируйте по умолчанию функцию Аккермана. | |
Примеры использования: | |
ackermann(0, 0); // 1 | |
ackermann(2, 1); // 5 | |
ackermann(2, 3); // 9 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment