0
Public Class Form1

Private Function fib()
    Dim result As Integer

    If (NUD1.Value < 2) Then
        result = 1
        Return result
    Else
        result = fib(NUD1.Value - 1) + fib(NUD1.Value - 2)
        Return result

    End If

End Function


Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click

    LbFb1.Items.Add(fib())
End Sub

结束类

出于某种原因,它只返回 0,1 的值,如果我超过 2,它就会崩溃。有什么想法吗?

4

1 回答 1

2

您没有在每次递归时修改 NUD1.value 值必须更新,这是该函数的逻辑

    Function fib(ByVal n)
    If n < 2 Then Return n Else Return fib(n - 1) + fib(n - 2)
    End Function

在这种情况下,如果您返回“结果”,它应该在下一个重复函数中传递,但在这种情况下,您传递的是不正确的 NUD1.value

于 2013-06-19T04:34:38.017 回答