【发布时间】:2014-04-09 18:03:41
【问题描述】:
我想找到一个本质上是递归的函数的值。例如,考虑如下定义的函数:
A(m,n) = n+1 if m=0
= A(m-1,A(m-1,n)) if m is not 0
在python中我可以很容易地编写这个函数:
def A(m,n):
if(m==0):
return n+1
else:
return A(m-1,A(m-1,n))
但我无法在 FORTRAN 中编写类似的函数。基本原因是 FORTRAN 函数不允许自己成为自己的参数。有什么办法可以解决这个问题吗?
提前致谢。
【问题讨论】:
-
您使用的是哪个 Fortran 版本?我知道(至少)在 Fortran 90 中递归是可能的。这篇文章是 Fortran 递归的一个例子。 stackoverflow.com/questions/11816351/fortran-functions
-
请注意,在您的示例代码中,
A不是A的参数。A接受参数m和n都没有显示出任何本身就是函数的迹象;相反,它们看起来好像是整数。A调用自身,它是递归的,但这与可以将自身作为参数处理的函数完全不同。