我试图了解递归子程序的工作原理。例如,这个递归函数计算斐波那契数。
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
Run Code Online (Sandbox Code Playgroud)
不幸的是我不能用递归子程序计算它。
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
Run Code Online (Sandbox Code Playgroud)
我可以在递归函数中求和 2 个斐波那契函数,但不能在递归子例程中求和。问题是我如何在递归子程序中使用 CALL 方法递归调用斐波那契子程序?