【发布时间】:2014-06-22 08:14:37
【问题描述】:
我试图了解递归子程序的工作原理。例如这个递归函数计算斐波那契数。
RECURSIVE FUNCTION fibonacci(n) RESULT(fibo)
IMPLICIT NONE
INTEGER, INTENT(IN) :: n
INTEGER :: fibo
IF (n <= 2) THEN
fibo = 1
ELSE
fibo = fibonacci(n-1) + fibonacci(n-2)
END IF
END FUNCTION fibonacci
不幸的是,我不能用递归子程序计算它。
RECURSIVE SUBROUTINE fibonacci(n)
IMPLICIT NONE
INTEGER, INTENT(IN) :: n
INTEGER :: fibo
IF (n <= 2) THEN
fibo = 1
ELSE
CALL fibonacci(n-1) + fibonacci(n-2)
END IF
END SUBROUTINE fibonacci
我可以在递归函数中对 2 个斐波那契函数求和,但不能在递归子例程中求和。问题是我如何使用 CALL 方法在递归子程序中递归调用斐波那契子程序?
【问题讨论】:
标签: recursion fortran fibonacci subroutine