【问题描述】递归计算函数Ack(m,n)的值,输入两个整数m和n(m和n均大于0 ),输出函数Ack的值。Ack(m,n)的定义为:
当m=0时,Ack(m,n)=n+1;
当n=0且m>0时,Ack(m,n)=Ack(m-1,1);
当n>0且m>0时,Ack(m,n)=Ack(m-1,Ack(m,n-1));
【输入形式】两个整数m和n
【输出形式】函数的名称,具体参数和计算结果。
【样例输入】2 3
【样例输出】Ack(2,3)=9
#include <stdio.h>
int Ack(int m,int n);
int main(){
int value,x,y;
scanf("%d %d",&x,&y);
value = Ack(x, y);
printf("Ack(%d,%d)=%d",x,y,value);
}
int Ack(int m,int n){
int result = 0;
if (m==0)
result = n+1;
if ((n==0)&&(m>0))
result = Ack(m-1,1);
if ((m>0)&&(n>0))
result = Ack(m-1, Ack(m, n-1));
return result;
}