2013-06-19 55 views
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 

末級遞歸/斐波那契採用visual basic

出於某種原因,只有當我上面去2.任何想法返回值0,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,這是不正確的

+0

謝謝。但是,如何使用按鈕調用此函數? – Balla13

+0

在btnStart_Click()事件下添加以下呼叫 LbFb1.Items.Add(fib(NUD1.Value)) – xtechkid

+0

非常感謝! – Balla13