FOJ 1042 Ackermann Function

最后自己得出的结论,双递归的深度不能超过3.否则层数将会以难以想象的速度趋向正无穷大!!

 

这题Ackerman函数是经典的一个双递归函数。

这题其实主要目的就是要让我们了解双递归函数的执行过程。

但是我们的代码当中并没有用到递归函数,这是为什么呢??

因为根据推倒可以得出,

当m=1的时候可以推导出2+n

当m=2的时候可以推导出3+n*2

当m=3的时候可以推导出

sum = 13;
   for (i=1;i<n;i++)
    sum += (int)pow(2,3+i);

 

之前我是用递归的方法做的,但是当m=3的时候,空间复杂度增加的非常快,最终将导致栈溢出。

引发Runtime Error.

 

那肯定大家想知道公式是怎么推的。。。

数学我是不好的。。

不过有个简单的办法。。

先用递归做。找出输出值的递增规律。从而推导出关系。。。

这个好像很不专业的样子。。。。

 

注意当m=3的时候,必须考虑n=0的情况。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值