Rekursiv funktion
Hej Alle,Er ny til VBA, så her har i et spørgsmål.
Jeg har lavet en rekursiv funktion (simpel), som efter at have kørt færdigt, skal returnere resultatet. Problemet er, at metoden returnere det forkerte! Men når man sætter et breakpoint i næstsidste linje i "FindGuess", vises her det rigtige resultat, som den burde returnere.
Det er ligesom, at når "FindGuess" returnere resultatet første gang, kører funktionen stadigvæk videre, og ændrer på resultatet. Hvorfor stopper funktionen ikke første gang den returnere sin værdi, men i stedet fortsætter med at køre flere gange?
Ideén er, at når flg. er sandt, skal funktionen returnere en værdi
If (Abs(target - result) > 0.001)
Håber i har svaret,
på forhånd tak
ps. Hvis i kan se at den kan optimeres, eller gøres bedre, må i meget gerne sige til :)
----------------------------------------------------------
Sub Makro1()
' Initialize
result = 0
target = 5 + (2 ^ 0.42)
guessResult = FindGuess(0, 1, True)
End Sub
Public Function FindGuess(intervalMin As Single, intervalMax As Single, direction As Boolean) As Single
If direction Then
middleGuessValue = Abs(((intervalMax - intervalMin) / 2)) + middleGuessValue
Else
middleGuessValue = Abs(Abs(((intervalMax - intervalMin) / 2)) - middleGuessValue)
End If
result = CalculateResult(middleGuessValue)
' We dont have a match
If (Abs(target - result) > 0.001) Then
' Guess is in upper
If (target > result) Then
FindGuess middleGuessValue, max, True
Else
max = middleGuessValue
End If
' Guess is in lower
If (target < result) Then
FindGuess min, max, False
Else
min = middleGuessValue
End If
End If
' Guess found, calculate the average
FindGuess = ((intervalMin + intervalMax) / 2)
End Function