我正在尝试理解递归子例程的工作原理。例如,这个递归函数计算斐波那契数。
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
我可以在递归函数中求解两个斐波那契函数,但无法在递归子例程中这样做。问题在于如何使用CALL方法在递归子例程中递归调用斐波那契子例程?