2009-08-31 10 views
1

J'essaye d'écrire un code pour la série Fibonacci dans VB, mais certaines des valeurs de ma série sont incorrectes. Quelqu'un peut-il m'aider avec le code?Développement de la série Fibonacci dans VB

Voici ce que j'ai jusqu'à présent.

Private Function FibNumber(number As Integer) As Integer 

    If (number > 2) Then 
     FibNumber = (FibNumber(number - 2) + FibNumber(number - 1)) 
    Else 
     FibNumber = 1 
    End If 

    End Function 

    Private Sub command1_click() 
    Dim x As Integer 
    x = Text1.Text 
    Call FibNumber(number) 

End Sub 
+0

Montrez ce que vous avez fait;> – IProblemFactory

+0

peut vous donner des exemples de code de votre tentative à ce jour? – waqasahmed

+0

compgeek: s'il vous plaît Modifier votre message avec des exemples de code de ce qui ne fonctionne pas. Vous obtiendrez certainement plus d'aide et de bonnes réponses si vous partagez votre code. –

Répondre

3

Eh bien, je fait une recherche rapide et je suis venu avec ce qui suit dans les deux premiers résultats:

Private Function FibNumber(number As Integer) As Integer 

If (number > 2) Then 
    FibNumber = (FibNumber(number - 2) + FibNumber(number - 1)) 
Else 
    FibNumber = 1 
End If 

End Function 
+0

mais vous devez appeler la fonction pour imprimer..je devine – compgeek

+0

@compgeek C'est correct, je n'ai pas supposé comment vous avez prévu d'utiliser la série Fibonacci, juste comment le calculer. – Joseph

+0

@joseph: alors complétez le code pour imprimer aussi – compgeek

1

Je sais que c'est bien vieux, mais je pense que la question pourrait être avec comment compgeek appelle la fonction.

Au lieu de:

Call FibNumber(number) 

Il devrait être:

Call FibNumber(x) 
+0

+1: C'est un bon endroit - c'est faux dans l'original et quelques-unes des autres réponses. –

1

Ma solution:

Private Function FibNumber(number As Integer) As Integer 
    If (number > 2) Then 
     FibNumber = (FibNumber(number - 2) + FibNumber(number - 1)) 
    Else 
     FibNumber = 1 
    End If 
End Function 

Private Sub command1_click() 
    Dim x As Integer 
    x = Text1.Text 
    Call FibNumber(number) 
End Sub 
0

Il est une fonction Java, et croyez-moi; Fibonacci ne sera pas beaucoup plus rapide ou complexe que cette version particulière. Il est optimisé pour fonctionner environ 100 fois plus vite que l'original récursif. Conseil: Vous devrez peut-être modifier maxN pour augmenter la longueur du paramètre! Par exemple, si vous voulez entrer des chiffres entre 0 et 199, vous devez augmenter le maxn à 200

static final int maxN = 72; 
static long knownF[] = new long[maxN]; 

static long F(int i) { 
    if (knownF[i] != 0) { 
    return knownF[i]; 
    } 

    long t = i; 

    if (i < 0) { 
     return 0; 
    } 

    if (i > 1) { 
     t = F(i - 1) + F(i - 2); 
    } 

    return knownF[i] = t; 
}