递归程序
在 Fortran 函数和子例程中,如果要直接或间接地再次调用自身,则需要显式声明为递归。因此,Fibonacci 系列的递归实现可能如下所示:
recursive function fibonacci(term) result(fibo)
integer, intent(in) :: term
integer::fibo
if (term <= 1) then
fibo = 1
else
fibo = fibonacci(term-1) + fibonacci(term-2)
end if
end function fibonacci
另一个例子是允许计算阶乘:
recursive function factorial(n) result(f)
integer::f
integer, intent(in) :: n
if(n == 0) then
f = 1
else
f = n * f(n-1)
end if
end function factorial
对于直接递归引用自身的函数,其定义必须使用 result
后缀。函数既不可能是 recursive
也不是 elemental
。