用 JavaScript 计算输入的阿克曼数
javascriptweb developmentfront end technology
阿克曼函数
阿克曼函数是递归函数的典型示例,尤其值得注意的是它不是原始递归函数。它的值增长非常快,其调用树的大小也是如此。
问题
我们需要编写一个 JavaScript 函数,该函数接受两个数字,m 和 n 作为第一个和第二个参数。我们的函数应该返回由以下公式定义的阿克曼数 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));