我想获得斐波那契数列的第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
我不了解fortran的应用程序,我将尽力向您展示如何使用javascript加快速度,并尽力提供fortran解决方案
var memo = [];
function fib(n) {
if (memo[n-1]) { //check to see if you already calculated the answer
return memo[n-1];
}
memo[n-1] = n <= 1 ? 1 : fib(n - 1) + fib(n - 2);
return memo[n-1];
}
这是记住的fortran
Integer (Int64) :: memo(48) = 0
Integer (Int64), Intent (Out) :: fb
Integer (Int8), Intent (In) :: n
Integer (Int64) :: fb1, fb2
If (memo(n) > 1) Then ! if its in the array we just use that value
fb = memo(n)
Else If (n <= 2) Then
memo(n) = Int (1, Int64)
fb = memo(n)
Else
Call fibonacci_genr (fb1, n-1)
Call fibonacci_genr (fb2, n-2)
memo(n) = fb1 + fb2
fb = memo(n)
End If
End Subroutine fibonacci_genr
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句