pat*_*pat 5 python computer-science computability
我正在研究一本关于计算的书(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))
Run Code Online (Sandbox Code Playgroud)
和一个用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
Run Code Online (Sandbox Code Playgroud)
写这个(用一个循环)的递归方式是:
def p(n,m):
if n==0:
return m+1
for i in range(m):
m=p(n-1,m)
return m
Run Code Online (Sandbox Code Playgroud)
或者完全递归的方式来编写它将是:
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)
Run Code Online (Sandbox Code Playgroud)
这两个函数有关联的简单方法吗?我觉得我在迷雾中爬行 - 任何有关如何处理这些问题的见解都会非常感激.另外,有没有办法在不引入第三个参数的情况下实现完全递归循环函数?谢谢.
嗯...我认为这对你没有多大帮助,我也有点困惑,但这是我的想法。
编辑——等等,我想我复制了这个函数。稍后我会再考虑一下,如果我想到什么我会更新!
归档时间: |
|
查看次数: |
779 次 |
最近记录: |