// 10-5
// 递归计算函数ack(m, n)
#include <stdio.h>
int ack(int m, int n);
int main(void)
{
int m, n;
printf("请输入m和n:");
scanf("%d%d", &m, &n);
while (1)
{
if (m>=0 && n>=0)
{
break;
}
else
{
printf("请重新输入m和n(m>=0,n>=0):");
scanf("%d%d", &m, &n);
}
}
printf("ack(%d, %d)=%d\n", m, n, ack(m,n));
return 0;
}
int ack(int m, int n)
{
int result;
if (m == 0)
{
result = n+1;
}
else if (m>0 && n==0)
{
result = ack(m-1,1);
}
else
{
result = ack(m-1,ack(m,n-1));
}
return result;
}