用 JavaScript 计算输入的 Ackermann 数


Ackermann 函数

Ackermann 函数是一个典型的递归函数示例,特别值得注意的是,它不是一个基本递归函数。它的值增长很快,而且其调用树的大小也是如此。

问题

我们要求编写一个 JavaScript 函数,该函数接受两个数字 m 和 n 作为第一个和第二个参数。我们的函数应返回 Ackermann 数 A(m,n),其定义如下

A(m,n) = n+1 if m=0
A(m,n) = A(m-1,1) if m>0 , n=0
A(m,n) = A(m-1,A(m,n-1)) if m,n > 0

示例

const m = 12;
const n = 11;
const ackermann = (m, n) => {
   if (m === 0) {
      return n+1
   }
   if (n === 0) {
      return ackermann((m - 1), 1);
   }
   if (m !== 0 && n !== 0) {
      return ackermann((m-1), ackermann(m, (n-1)))
   }
}
console.log(ackermann(m, n));

更新于: 2021-04-22

292 次阅读

开启你的职业生涯

完成课程获得认证

开始
广告