阿克曼(Ackmann)函数 A(m,n)A(m,n) 中,m,nm,n 的取值范围是 (m \le 3, n \le 10)(m≤3,n≤10),函数定义为:
\displaystyle A(m,n)= \begin{cases} n+1 && m=0 \\ A(m-1,1) && m>0,n=0 \\ A(m-1,A(m,n-1)) && m,n>0 \end{cases}A(m,n)=⎩⎪⎪⎨⎪⎪⎧n+1A(m−1,1)A(m−1,A(m,n−1))m=0m>0,n=0m,n>0
输入格式
输入两个整数 m,n(0 \le m \le 3, 0 \le n \le 10)m,n(0≤m≤3,0≤n≤10)。
输出格式
输出 A(m,n)A(m,n) 值。
格式说明
输出时每行末尾的多余空格,不影响答案正确性
样例输入
2 3
样例输出
9
#include <iostream>
using namespace std;
int f(int m,int n){
if(m==0){
return n+1;
}
else{
if(m>0&&n==0){
return f(m-1,1);
}
else
return f(m-1,f(m,n-1));
}
}
int main() {
int m,n;
cin>>m>>n;
cout<<f(m,n);
return 0;
}