mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-04-11 16:00:12 -04:00
1.3 KiB
1.3 KiB
id, title, challengeType, forumTopicId, dashedName
| id | title | challengeType | forumTopicId | dashedName |
|---|---|---|---|---|
| 594810f028c0303b75339acf | 阿克曼函数 | 1 | 302223 | ackermann-function |
--description--
The Ackermann function is a classic example of a recursive function, notable especially because it is not a primitive recursive function. It grows very quickly in value, as does the size of its call tree.
阿克曼函数通常定义如下:
A(m, n) = \\begin{cases} n+1 & \\mbox{if } m = 0 \\\\ A(m-1, 1) & \\mbox{if } m > 0 \\mbox{ and } n = 0 \\\\ A(m-1, A(m, n-1)) & \\mbox{if } m > 0 \\mbox{ and } n > 0. \\end{cases}
它的参数从不是负的,而且总是有终点。
--instructions--
编写一个函数,返回 A(m, n) 的值。 任意精度是首选(因为函数增长如此之快),但不是必需的。
--hints--
ack 应该是一个函数。
assert(typeof ack === 'function');
ack(0, 0) 应该返回 1。
assert(ack(0, 0) === 1);
ack(1, 1) 应该返回 3。
assert(ack(1, 1) === 3);
ack(2, 5) 应该返回 13。
assert(ack(2, 5) === 13);
ack(3, 3) 应该返回 61。
assert(ack(3, 3) === 61);
--seed--
--seed-contents--
function ack(m, n) {
}
--solutions--
function ack(m, n) {
return m === 0 ? n + 1 : ack(m - 1, n === 0 ? 1 : ack(m, n - 1));
}