我正在阅读一本关于计算的书(Minksy 1967),并且很难将递归函数与根据循环定义的函数相关联。具体来说,他要求找到两个函数之间的关系:
Ackermann 函数(所有代码均为 python):
def a(n,m):
if n==0:
return m+1
if m==0:
return a(n-1,1)
return a(n-1,a(n,m-1))
还有一个用 n 个嵌套循环计算的函数:
def p(n,m):
for i_1 in range(m):
for i_2 in range(m):
...
for i_n in range(m):
m+=1
一种递归的写法(一个循环)是:
def p(n,m):
if n==0:
return m+1
for i in range(m):
m=p(n-1,m)
return m
或者完全递归的写法是:
def p(n,m):
return P(n,m,m)
def P(n,k,m):
if n==0:
return m+1
if k==1:
return P(n-1,m,m)
m=P(n,k-1,m)
return P(n-1,m,m)
这两个函数是否有一些简单的关联方式?我觉得我在迷雾中四处游荡——如果您能给我任何关于如何解决这类问题的见解,我们将不胜感激。还有,有没有办法在不引入第三个参数的情况下实现完全递归的循环功能呢?谢谢。
最佳答案
嗯...我认为这对你没有多大帮助,我也有点困惑,但这是我的想法。
- 阿克曼(0, m) == p(0, m)
- 阿克曼(1, m + 1) == p(1, m)
编辑——等等,我想我复制了函数。稍后我会再考虑一下,如果我想到什么我会更新!
关于python - 阿克曼函数与 n 个嵌套循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4010367/