递归函数不会按预期返回

时间:2015-01-08 09:56:45

标签: vb.net function recursion console

我使用以下代码查找完全匹配。

使用递归函数。

但即使在执行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 

为什么这个函数没有返回任何值?执行返回后,控件转到End Function然后转到findMatch(startval, mid),因此连续的步骤不会返回任何值。我正在寻找一个原因或解决方案,而不是寻找匹配值的替代方法。 提前致谢

1 个答案:

答案 0 :(得分:3)

  

为什么这个函数没有返回任何值?

因为您没有返回值,请使用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