你会如何设计一个执行Ackermann功能的程序?

时间:2014-11-23 23:20:02

标签: function recursion

嗨,我对CS很新,我很难知道如何解决这个问题。它要我设计一个能解决阿克曼函数的函数ackermann(m,n)。它要求我使用以下逻辑:如果m = 0,则返回n + 1,如果n = 0则返回ackermann(m-1,1),否则返回ackermann(m-1,ackermann(m,n) -1))。还有谁有任何良好的链接,以更好地理解错觉? -Thanks

1 个答案:

答案 0 :(得分:0)

程序语言中的递归函数声明与算法伪代码非常相似。

这是python中的一个简单的ackerman函数:

def ackermann (m, n):
    if m==0:
        return n+1
    elif n==0:
        return ackermann(m-1,1)
    else:
        return ackermann(m-1,ackermann(m,n-1))

print ackermann(3,3)

你可以给出你想要的任何数字,但要注意ackermann是一个非常递归的函数,并且可能会超过数量很少的堆栈边界。

这是递归理解的好材料。 stanford intro to recursive