【发布时间】:2015-08-05 04:15:40
【问题描述】:
我想得到斐波那契数列的第 48 个元素 我可以将其存储在 64 位整数中。我正在使用递归子例程,但要花很长时间才能完成。如果有人能找到我的递归子程序的问题,我将不胜感激。
Integer (Int8) :: n
Integer (Int64) :: fib64
n = Int (48, Int8)
Call fibonacci_genr (fib64, n)
这是我的递归子程序
Recursive &
Subroutine fibonacci_genr &
( &
fb, n &
)
Integer (Int64), Intent (Out) :: fb
Integer (Int8), Intent (In) :: n
Integer (Int64) :: fb1, fb2
If (n < 2) Then
fb = Int (n, Int64)
Else
Call fibonacci_genr (fb1, n-1)
Call fibonacci_genr (fb2, n-2)
fb = fb1 + fb2
End If
End Subroutine fibonacci_genr
【问题讨论】:
-
您是否计算出递归计算第 48 个斐波那契数需要多少次调用? (提示:很多)
-
只需将计数器放入您的子例程中并计算调用次数并打印出来 - 您会受到启发。
-
您可以记住您的答案,无需查找两次。
-
调用次数惊人
标签: recursion fortran fibonacci