P5119Ackermann函数 | ||
|
问题描述
在数学上有一个著名的“阿克曼(Ackermann)函数”。
众所周知,阿克曼函数在理论计算机科学领域中扮演重要角色。
阿克曼函数它是二元函数,其定义式为:A(M,N),M≥0,N≥0
具体定义如下:
现在给你两个数字:m和n,你的任务是计算的A(m,n)。
输入格式
两个整数,即m,n
输出格式
一个整数,表示计算结果
样例输入
2 5
样例输出
13
提示
数据范围: 当m <=3,n<=10
普通的递归,只是要用long long
#include<iostream>
using namespace std;
long long A(int m,int n){
//因为Ackermann函数增长速度极快,所以应用long long
if(m==0){
return n+1;
//第一种情况
}
if(m>0&&n==0){
return A(m-1,1);
//第二种情况
}
if(m>0&&n>0){
return A(m-1,A(m,n-1));
//最后一种情况
}
}
int main (){
int a,b;
cin>>a>>b;
cout<<A(a,b);
}