Public values() As Double
Function MemFibonacci(ByVal n As Double) As Double
If Nonexistent(n) Then
Select Case n
Case Is <= 1
MemFibonacci = n
Case Else
MemFibonacci = MemFibonacci(n - 1) + MemFibonacci(n - 2)
End Select
Call WriteValue(n, MemFibonacci)
Else
Return ReadValue(n)
End If
End Function
Private Function Nonexistent(ByVal n As Double) As Boolean
If n > UBound(values) Then
Nonexistent = True
ElseIf n > 0 And values(n) = 0 Then
Nonexistent = True
Else
Nonexistent = False
End If
End Function
Private Sub WriteValue(ByVal n As Double, ByVal Value As Double)
Static Values(n)
Values(n) = Value
End Sub
'Fonction de lecture des entrées dans le tableau de sauvegarde
Private Function ReadValue(ByVal n As Double) As Double
Return values(n)
End Function