Hướng dẫn what is fibonacci series formula in python? - công thức chuỗi fibonacci trong python là gì?

Trong chương trình này, bạn sẽ học cách in trình tự Fibonacci bằng cách sử dụng vòng lặp.

Để hiểu ví dụ này, bạn nên có kiến ​​thức về các chủ đề lập trình Python sau:

  • Python nếu ... tuyên bố khác
  • Python trong khi vòng lặp

Trình tự Fibonacci là chuỗi số nguyên là 0, 1, 1, 2, 3, 5, 8 ....

Hai thuật ngữ đầu tiên là 0 và 1. Tất cả các thuật ngữ khác có được bằng cách thêm hai thuật ngữ trước đó. Điều này có nghĩa là để nói thuật ngữ thứ n là tổng của [n-1] và thuật ngữ [n-2].

Mã nguồn

# Program to display the Fibonacci sequence up to n-th term

nterms = int[input["How many terms? "]]

# first two terms
n1, n2 = 0, 1
count = 0

# check if the number of terms is valid
if nterms  1:
        return rec_fib[n-1] + rec_fib[n-2]
    return n

Nhưng đại diện chính xác này của định nghĩa toán học là vô cùng không hiệu quả đối với các số lớn hơn nhiều so với 30, bởi vì mỗi số được tính toán cũng phải tính toán cho mỗi số bên dưới nó. Bạn có thể chứng minh mức độ chậm của nó bằng cách sử dụng như sau:

for i in range[40]:
    print[i, rec_fib[i]]

Recursion đã ghi nhớ cho hiệu quả

Nó có thể được ghi nhớ để cải thiện tốc độ [ví dụ này tận dụng thực tế là đối số từ khóa mặc định là cùng một đối tượng mỗi khi hàm được gọi, nhưng thông thường bạn sẽ không sử dụng đối số mặc định có thể thay đổi vì lý do này chính xác]:

def mem_fib[n, _cache={}]:
    '''efficiently memoized recursive function, returns a Fibonacci number'''
    if n in _cache:
        return _cache[n]
    elif n > 1:
        return _cache.setdefault[n, mem_fib[n-1] + mem_fib[n-2]]
    return n

Bạn sẽ thấy phiên bản ghi nhớ nhanh hơn nhiều và sẽ nhanh chóng vượt quá độ sâu đệ quy tối đa của bạn trước khi bạn thậm chí có thể nghĩ để dậy uống cà phê. Bạn có thể thấy nó nhanh hơn bao nhiêu về mặt trực quan bằng cách làm điều này:

for i in range[40]:
    print[i, mem_fib[i]]

.

def mem_fib[n, _cache={}]:
    '''don't do this'''
    if n > 1:  
        return _cache.setdefault[n, mem_fib[n-1] + mem_fib[n-2]]
    return n

Trình tạo được xác định đệ quy:

Như tôi đã học Haskell, tôi đã bắt gặp việc thực hiện này trong Haskell:

How many terms? 7
Fibonacci sequence:
0
1
1
2
3
5
8
0

Lần gần nhất tôi nghĩ rằng tôi có thể nhận được điều này trong Python vào lúc này là:

How many terms? 7
Fibonacci sequence:
0
1
1
2
3
5
8
1

Điều này thể hiện nó:

How many terms? 7
Fibonacci sequence:
0
1
1
2
3
5
8
2

Nó chỉ có thể đi đến giới hạn đệ quy, mặc dù. Thông thường, 1000, trong khi phiên bản Haskell có thể lên tới 100 triệu, mặc dù nó sử dụng tất cả 8 GB bộ nhớ máy tính xách tay của tôi để làm như vậy:

How many terms? 7
Fibonacci sequence:
0
1
1
2
3
5
8
3

Tiêu thụ trình lặp để có được số fibonacci thứ n

Một người bình luận hỏi:

Câu hỏi cho hàm fib [] dựa trên iterator: Điều gì sẽ xảy ra nếu bạn muốn có được thứ n, ví dụ như số FIB thứ 10 thì sao?

Tài liệu Itertools có một công thức cho việc này:

How many terms? 7
Fibonacci sequence:
0
1
1
2
3
5
8
4

và bây giờ:

How many terms? 7
Fibonacci sequence:
0
1
1
2
3
5
8
5

Làm thế nào để bạn viết một loạt Fibonacci trong Python?

Chương trình Python để in chuỗi Fibonacci..
Trình tự Fibonacci:.
Bước 1: Nhập số lượng giá trị mà chúng tôi muốn tạo chuỗi Fibonacci ..
Bước 2: Khởi tạo đếm = 0, n_1 = 0 và n_2 = 1 ..
Bước 3: Nếu n_terms
Bước 4: In "Lỗi" vì nó không phải là số hợp lệ cho chuỗi ..

Công thức sê -ri Fibonacci là gì?

Công thức fibonacci được đưa ra là, fn = fn-1 + fn-2, trong đó n> 1.Fn = Fn-1 + Fn-2, where n > 1.

Sê -ri Fibonacci trong Python sử dụng cho Loop là gì?

Với Python, chúng ta có thể dễ dàng có được một chuỗi Fibonacci với một vòng lặp.Trình tự Fibonacci hai thuật ngữ đầu tiên là 0 và 1, và mỗi thuật ngữ tiếp theo là tổng của hai thuật ngữ cuối cùng.def fibonacci [n]: sequence = [] if n == 1: sequence = [0] other: sequence = [0,1] cho i trong phạm vi [1, n-1]: trình tự.The Fibonacci sequence first two terms are 0 and 1, and each subsequent term is the sum of the last two terms. def fibonacci[n]: sequence = [] if n == 1: sequence = [0] else: sequence = [0,1] for i in range[1, n-1]: sequence.

Bài Viết Liên Quan

Chủ Đề