递归函数不会像预期的那样 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