使用visual basic的递归/ Fibonacci

时间:2013-06-19 04:25:32

标签: vb.net visual-studio-2010

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的值,如果我超过2,则会崩溃。任何想法?

1 个答案:

答案 0 :(得分: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是不正确的