小编cyb*_*b0k的帖子

递归子程序如何在 fortran 中工作?

我试图了解递归子程序的工作原理。例如,这个递归函数计算斐波那契数。

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 方法递归调用斐波那契子程序?

recursion fortran fibonacci subroutine

3
推荐指数
1
解决办法
6401
查看次数

标签 统计

fibonacci ×1

fortran ×1

recursion ×1

subroutine ×1