题目描述
阿克曼(Ackmann)函数A(m,n)中,m,n定义域是非负整数,函数值定义为:
写出计算Ack(m,n)的递归算法程序。
输入
两个非负整数m和n。
输出
阿克曼函数A(m,n)的值。测试数据保证结果不超过int范围,直接用递归不超时。
(提示:阿克曼函数的值增长速度非常高,仅是对于A(4,2)的输出就有19729位,而A(4,3)则即使是位数也不易估计。)
样例输入
2 3
样例输出
9
AC代码:
#include<iostream>
using namespace std;
int akm(int m, int n) {
if (m == 0)
return (n + 1);
else if (n == 0)
return (akm(m - 1, 1));
else
return (akm(m - 1, akm(m, n - 1)));
}
int main() {
int m, n;
cin >> m >> n;
cout << akm(m, n) << endl;
return 0;
}