阿克曼(Ackermann)函数
题目描述
阿克曼(Ackermann)函数 A ( m , n ) A(m,n) A(m,n) 中, m , n m, n m,n 定义域是非负整数( m ≤ 3 m \le 3 m≤3, n ≤ 10 n \le 10 n≤10),函数值定义为:
a k m ( m , n ) = n + 1 \mathit{akm}(m,n)=n+1 akm(m,n)=n+1;( m = 0 m=0 m=0 时)。
a k m ( m , n ) = a k m ( m − 1 , 1 ) \mathit{akm}(m,n)=\mathit{akm}(m-1,1) akm(m,n)=akm(m−1,1);( m > 0 m>0 m>0、 n = 0 n=0 n=0 时)。
a k m ( m , n ) = a k m ( m − 1 , a k m ( m , n − 1 ) ) \mathit{akm}(m,n)=\mathit{akm}(m-1,\mathit{akm}(m,n-1)) akm(m,n)=akm(m−1,akm(m,n−1));( m , n > 0 m,n>0 m,n>0 时)。
输入格式
m m m 和 n n n。
输出格式
函数值。
样例 #1
样例输入 #1
2 3
样例输出 #1
9
代码内容
#include <iostream>
#include <string>
#include <bits/stdc++.h>
using namespace std;
int akm(int m,int n)
{
if(m==0)
return n+1;
else if(m>0&&n==0)
return akm(m-1,1);
else if(m>0&&n>0)
return akm(m-1,akm(m,n-1));
}
int main()
{
int m,n;
cin>>m>>n;
int index;
index=akm(m,n);
cout<<index<<endl;
return 0;
}