本题要求实现 Ackermenn 函数的计算,其函数定义如下:
函数接口定义:
int Ack( int m, int n );
其中 m 和 n 是用户传入的非负整数。函数 Ack 返回 Ackermenn 函数的相应值。题目保证输入输出都在长整型范围内。
裁判测试程序样例:
#include <stdio.h>
int Ack( int m, int n );
int main()
{
int m, n;
scanf("%d %d", &m, &n);
printf("%d\n", Ack(m, n));
return 0;
}
/* 你的代码将被嵌在这里 */
输入样例:
2 3
输出样例:
9
来源:
来源:PTA | 程序设计类实验辅助教学平台
链接:https://pintia.cn/problem-sets/13/exam/problems/578
提交:
题解:
/*
* 递归计算 Ackermenn 函数
*/
int Ack(int m, int n) {
if (m == 0) {
return n + 1;
} else if (m > 0 && n == 0) {
return Ack(m - 1, 1);
} else if (m > 0 && n > 0) {
return Ack(m - 1, Ack(m, n - 1));
}
}