厦大C语言上机 1390 伪ackerman函数
作者:互联网
1390.伪ackerman函数
时间限制: 1000 MS 内存限制: 65536 K
提交数: 1 (0 users) 通过数: 1 (1 users)
问题描述
小明在看数学书的时候看到了一个叫ackerman的数学函数,感觉非常神奇,于是他写了几个小数据算了一下,发现怎么也算不出来。无奈的他小小的修改了一下函数,发现变的简单许多。可是他现在想要得到的结果有很多,你能帮他吗?该函数如下:
{n+1; m=0,n>0
A(m,n)= {A(m-1,1); n=0,m>0
{A(m-1,n-1)+n; n>0,m>0
{0; n=0,m=0
输入格式
输入第一行一个整数T,表示小明询问你的次数。(T<=100)
接下来的T行每行两个整数M,N。(0<=M,N<=1000)
输出格式
对每个M,N输出相应的A(M,N)的值,每个值输出一行。
样例输入
3
1 1
22 15
23 21
样例输出
1
125
232
来源
时间限制: 1000 MS 内存限制: 65536 K
提交数: 1 (0 users) 通过数: 1 (1 users)
问题描述
小明在看数学书的时候看到了一个叫ackerman的数学函数,感觉非常神奇,于是他写了几个小数据算了一下,发现怎么也算不出来。无奈的他小小的修改了一下函数,发现变的简单许多。可是他现在想要得到的结果有很多,你能帮他吗?该函数如下:
{n+1; m=0,n>0
A(m,n)= {A(m-1,1); n=0,m>0
{A(m-1,n-1)+n; n>0,m>0
{0; n=0,m=0
输入格式
输入第一行一个整数T,表示小明询问你的次数。(T<=100)
接下来的T行每行两个整数M,N。(0<=M,N<=1000)
输出格式
对每个M,N输出相应的A(M,N)的值,每个值输出一行。
样例输入
3
1 1
22 15
23 21
样例输出
1
125
232
来源
xmu
#include <stdio.h>
int ackerman(int m, int n)
{
if (m == 0 && n > 0)
return n + 1;
else if (n == 0 && m > 0)
return ackerman(m - 1, 1);
else if (n > 0 && m > 0)
return ackerman(m - 1, n - 1) + n;
else
return 0;
}
int main()
{
int t;
int m, n;
scanf("%d", &t);
while (t--)
{
scanf("%d %d", &m, &n);
printf("%d\n", ackerman(m, n));
}
return 0;
}
标签:return,函数,int,ackerman,else,&&,厦大,C语言 来源: https://blog.51cto.com/liulizhi1996/3035737