hỏi về fibonacci



  • number= int(input("How many Fibonnaci numbers do you want?"))
    a=[1,1]
    def fibo():
    a.append (a[len(a)-1]+a[len(a)-2])
    return
    while len(a) < number:
    fibo()
    print (a)

    ai giải thích cho em chỗ a[len(a)-1] lại ra 2 với ạ



  • Dear bạn,

    Code của bạn chưa hoàn chỉnh và câu hỏi không rõ ràng( chưa rõ biến number).

    Code lại là:

    0_1480421609043_Capture.PNG

    List a có 2 phần tử a[0] = 1 và a[1] = 1

    Nếu bạn nhập number = 1 thì a[len(a)-1] = a[2-1] = a[1] = 1 ( List a vốn đã được khởi tạo với 2 phần tử)

    Nếu bạn nhập number = 2 thì a[len(a)-1] = a[2-1] = a[1] = 1

    Tuy nhiên nếu bạn nhập number = 3 thì a[len(a)-1] = a[3-1] = a[2]

    Mà a[2] được tính là a[0] + a[1] = 1 + 1 = 2

    Tương tự khi

    • number = 4, a[len(a)-1] = 3
    • number = 5, a[len(a)-1] = 5
    • number = 6, a[len(a)-1] = 8


  • em cảm ơn nhiều ạ



  • @Núi-Nhỏ đã nói trong hỏi về fibonacci:

    Dear bạn,

    Code của bạn chưa hoàn chỉnh và câu hỏi không rõ ràng( chưa rõ biến number).

    Code lại là:

    0_1480421609043_Capture.PNG

    List a có 2 phần tử a[0] = 1 và a[1] = 1

    Nếu bạn nhập number = 1 thì a[len(a)-1] = a[2-1] = a[1] = 1 ( List a vốn đã được khởi tạo với 2 phần tử)

    Nếu bạn nhập number = 2 thì a[len(a)-1] = a[2-1] = a[1] = 1

    Tuy nhiên nếu bạn nhập number = 3 thì a[len(a)-1] = a[3-1] = a[2]

    Mà a[2] được tính là a[0] + a[1] = 1 + 1 = 2

    Tương tự khi

    • number = 4, a[len(a)-1] = 3
    • number = 5, a[len(a)-1] = 5
    • number = 6, a[len(a)-1] = 8

    A. Núi Nhỏ cho e hỏi : Câu lệnh return trong đoạn Code trên có nhiệm vụ gì vậy.
    Vì e thử bỏ nó đi thì thấy kết quả không có gì khác cả.



  • Ai có thể giải thích cho câu hỏi của e vs được không ạ



  • @yeulaptrinh1995 Đúng là bỏ return đi thì cũng không ảnh hướng gì tới kết quả, tuy nhiên đã là hàm thì nên return một cái gì đó ( ở đây là a , bạn có thể return gì cũng được).


Hãy đăng nhập để trả lời
 

Có vẻ như bạn đã mất kết nối tới Cộng đồng Python Việt Nam, vui lòng đợi một lúc để chúng tôi thử kết nối lại.