题目描述
阿克曼 (Ackmann) 函数 A(m,n) 中,m,n 定义域是非负整数 (m≤3,n≤10),函数值定义为:
akm(m,n)=n+1;(m=0 时 )。akm(m,n)=akm(m−1,1);(m>0,n=0 时 )。
akm(m,n)=akm(m−1,akm(m,n−1));(m,n>0 时 )。
输入格式
m 和 n。
输出格式
函数值。
输入输出样例
输入 #1
2 3
输出 #1
9
#include<bits/stdc++.h>
using namespace std;
int akm(int m,int n){
if(m==0)return n+1;
if(m==1)return n+2;
if(m==2)return 2*n+3;
if(m==3)return (1^(n+3))-3;
}
int main(){
int m,n;
scanf("%d%d",&m,&n);
printf("%d\n",akm(m,n));
return 0;
}
代码解读
int akm(int m,int n){
if(m==0)return n+1;
if(m==1)return n+2;
if(m==2)return 2*n+3;
if(m==3)return (1^(n+3))-3;
}--由给出的akm(m,n)=n+1;(m=0 时 )。akm(m,n)=akm(m−1,1);(m>0,n=0 时 )。
akm(m,n)=akm(m−1,akm(m,n−1));(m,n>0 时 )得到;
int main(){
int m,n;
scanf("%d%d",&m,&n);
printf("%d\n",akm(m,n));
return 0;
}-->输入m,n,输出akm(m,n).