2016-06-02 5 views
0

Ich schreibe eine Funktion, um n'th Fibonancci zu finden. Codes, die hier -Wie finde ich die Fibonancci-Serie durch Iteration?

def fib(n): 
    res1 = 0 
    res2 = 0 
    for i in str(n): 
     res1 = n - 1 
     for j in str(n): 
      res2 = n - 2 
    return res1 + res2 

Durch den obigen Code, wenn i n = 4 eingeben, als er druckt 5. Das ist richtig. Aber wenn ich n = 5 drucke, als es 7 druckt, ist es nicht korrekt. Wie behebt man die Fehler hier? Gibt es einen logischen Fehler? Kann mir jemand im Detail erklären.

Verwenden Sie keine rekursive Methode, ich möchte es mit Iteration tun.

+2

Dies könnte Ihnen mehr helfen als eine korrekte Lösung von jemand anderem geschrieben: https://ericlippert.com/2014/03/05/how-to-debug-small-programs/. –

+0

Was ist der Zweck der Verwendung von 'str (n)'? – Wolf

+0

Int-Objekt ist nicht iterbar @wolf – user6359012

Antwort

4
def fib(n): 
    a,b = 1,1 
    for i in range(n-1): 
     a,b = b,a+b 
    return a 

print(fib(4)) 

Nun gibt es eine TechnoBeans-Seite 5 Ways of Fibonacci in Python zeigt.

Ihr Code:

def fib(n): 
    res1 = 0 
    res2 = 0 
    for i in str(n):  # i gets the string value 9 here 
     res1 = n-1  # res1 is 9-1 which is 8 
     for j in str(n): # j gets the string value 9 here 
      res2= n -2 # res2 is 9-2 which is 7 
    return res1 +res2 # returns 8 + 7 which is 15 

print(fib(9))   # output 15 

Sie haben viele unnötige Dinge in Ihrem Code, müssen Sie zunächst einige grundlegende Verständnis von Python. Ich persönlich fand die folgende Seite sehr hilfreich, um Python zu lernen:

Um zu verstehen, warum Ihr Code Fibonacci nicht tun, müssen Sie verstehen, wie Fibonacci funktioniert. Sie können mehr über Fibonacci unter Fibonacci Sequence auf Mathe ist Fun Website lesen.

+0

Danke, es ist großartig – user6359012

+1

@Tristan Wenn Sie * this * und * hier * für Links verwenden, dann gibt es keine Chance, es wiederherzustellen, wenn der Inhalt sich bewegt (wurde archiviert). @ Do0msDay * 'Um zu verstehen, warum Ihr Code nicht Fibonacci macht * * - Ich denke nicht, einige grundlegende Python Verständnis ist nicht zu vernachlässigen. – Wolf

+0

@Wolf Ich stimme zu, er hat viele unnötige Dinge in seinem Code. Ich war mir nicht sicher, wie ich es angehen sollte. – Do0msDay