序
都写的简单题,今天来写一篇递归的吧— —
阿克曼(Ackmann)函数
题目描述
阿克曼(Ackmann)函数A(m,n)中,m,n定义域是非负整数(m≤3,n≤10),函数值定义为:
输入格式
输入 m 和 n。
输出格式
函数值。
输入数据 1
2 3
输出数据 1
9
解题
这是一道递归的基础题,只需要在函数里判断一下就可以了,不用多加思考,直接上代码啦— —
代码
#include <bits/stdc++.h> //万能头文件
using namespace std;
int a(int m , int n) { //定义函数
if (m == 0) return n + 1; //如果m=0返回n+1
else if (m > 0 && n == 0) return a( m - 1 , 1); //如果m>0且n=0返回a(m-1,1)(相当于再执行一次
else if (m > 0 && n > 0) return a(m - 1 , a(m , n - 1)); //如果m>0且n>0返回a(m-1,a(m,n-1))(相当于再执行一次
}
int main () {
int m , n;
cin >> m >> n; //输入m和n
cout << a(m , n); //输出函数
return 0;
}