递归函数不会像预期的那样 return
recursive function will not return as expected
我正在使用以下代码来查找完全匹配项。
使用递归函数。
但即使在执行 return 语句后它也不会 return 任何值:
Public Function findMatch(ByVal startval As Integer, ByVal endVal As Integer) As Integer
Dim mid As Integer = Ceiling((startval + endVal) / 2)
Dim value As Integer = 110
If mid = value Then
Return mid
ElseIf mid > value Then
findMatch(startval, mid)
ElseIf mid < value Then
findMatch(mid, endVal)
End If
End Function
为什么这个函数没有 returning 任何值?在执行 return 之后,控制将转到 End Function
,然后转到 findMatch(startval, mid)
,因此连续的步骤不是 return 任何值。我正在寻找一个原因或解决方案而不是寻找匹配值的替代方法。
提前致谢
why this function is not returning any value?
因为你没有return值,所以使用Return findMatch(startval, mid)
:
Public Function findMatch(ByVal startval As Integer, ByVal endVal As Integer) As Integer
Dim mid As Integer = Ceiling((startval + endVal) / 2)
Dim value As Integer = 110
If mid = value Then
Return mid
ElseIf mid > value Then
Return findMatch(startval, mid)
ElseIf mid < value Then
Return findMatch(mid, endVal)
End If
End Function
我正在使用以下代码来查找完全匹配项。
使用递归函数。
但即使在执行 return 语句后它也不会 return 任何值:
Public Function findMatch(ByVal startval As Integer, ByVal endVal As Integer) As Integer
Dim mid As Integer = Ceiling((startval + endVal) / 2)
Dim value As Integer = 110
If mid = value Then
Return mid
ElseIf mid > value Then
findMatch(startval, mid)
ElseIf mid < value Then
findMatch(mid, endVal)
End If
End Function
为什么这个函数没有 returning 任何值?在执行 return 之后,控制将转到 End Function
,然后转到 findMatch(startval, mid)
,因此连续的步骤不是 return 任何值。我正在寻找一个原因或解决方案而不是寻找匹配值的替代方法。
提前致谢
why this function is not returning any value?
因为你没有return值,所以使用Return findMatch(startval, mid)
:
Public Function findMatch(ByVal startval As Integer, ByVal endVal As Integer) As Integer
Dim mid As Integer = Ceiling((startval + endVal) / 2)
Dim value As Integer = 110
If mid = value Then
Return mid
ElseIf mid > value Then
Return findMatch(startval, mid)
ElseIf mid < value Then
Return findMatch(mid, endVal)
End If
End Function