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,则会崩溃。任何想法?
答案 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是不正确的