2013-06-19 4 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 

End ClassРекурсия/Фибоначчи с помощью Visual Basic

По какой-то причине он только возвращает значение значение 0,1 и падает, если я иду выше 2. Любые идеи?

ответ

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

Смежные вопросы