static int ack(int m,int n)
{
if(m==0)
{
return n+1;
}
else if(n==0)
{
return ack(m-1,1);
}
else
{
return ack(m-1,ack(m,n-1));
}
}
求ack(3,3)
我们来看下 ack(1,n)=ack(0,ack(1,n-1))=ack(1,n-1)+1=...=ack(1,0)+n
我们推知ack(1,0)=2
故 ack(1,n)=n+2;
ack(2,n)=ack(1,ack(2,n-1))=ack(2,n-1)+2=...=ack(2,0)+2n
我们推知ack(2,0)=3
故ack(2,n)=2n+3
所以上面的结果就是 2*29+3=61
本文解析了Ack函数的递归实现,并通过逐步推导给出了Ack(3,3)的具体计算过程及结果。文中展示了如何通过递归调用的方式解决复杂的数学问题。
1589

被折叠的 条评论
为什么被折叠?



