HOWTO · Python

Python의 피보나치 수열

이 튜토리얼은 파이썬에서 피보나치 시퀀스를 표시하는 방법을 보여줍니다.

이 페이지의 내용

피보나치 수열은 수학에서 일반적이고 자주 사용되는 수열입니다. 아래와 같습니다.

0,1,1,2,3,5,8,13,21,34,55,89,144,229....

피보나치 수열의 다음 숫자는 이전 두 숫자의 합이며 수학적으로Fn = Fn-1 + Fn-2로 표시 될 수 있습니다.

시리즈의 첫 번째 요소와 두 번째 요소는 각각 0과 1입니다.

이 튜토리얼에서는 파이썬에서 이러한 시퀀스를 만드는 방법에 대해 설명합니다.

수학 공식을 사용하여 Python에서 피보나치 수열 만들기

피보나치 수열의 모든 요소는 다음 수학 공식을 사용하여 표현할 수 있습니다.

피보나치 방정식

파이썬에서이 공식을 구현하여 필요한 수까지 시리즈를 찾고 시퀀스를 인쇄 할 수 있습니다. 다음 코드는 방법을 보여줍니다.

from math import sqrt


def F(n):
    return ((1 + sqrt(5)) ** n - (1 - sqrt(5)) ** n) / (2 ** n * sqrt(5))


def Fibonacci(startNumber, endNumber):
    n = 0
    cur = F(n)
    while cur <= endNumber:
        if startNumber <= cur:
            print(cur)
        n += 1
        cur = F(n)


Fibonacci(1, 100)

출력:

1.0
1.0
2.0
3.0000000000000004
5.000000000000001
8.000000000000002
13.000000000000002
21.000000000000004
34.00000000000001
55.000000000000014
89.00000000000003

Fibonacci()함수는 시작 번호와 끝 번호로 지정된 시퀀스의 특정 위치에서 피보나치 수를 계산합니다.

for루프를 사용하여 Python에서 피보나치 시퀀스 생성

필요한 시리즈를 구현하기 위해for루프를 사용하여 함수를 생성합니다. 이 방법에서는 필요한 길이의 시퀀스를 인쇄합니다. for루프 만 사용하여 필요한 길이로 반복하고 반복 할 때마다 필요한 변수를 변경합니다. 다음 코드는 방법을 설명합니다.

def fibonacci_iter(n):
    a = 1
    b = 1
    if n == 1:
        print("0")
    elif n == 2:
        print("0", "1")
    else:
        print("0")
        print(a)
        print(b)
        for i in range(n - 3):
            total = a + b
            b = a
            a = total
            print(total)


fibonacci_iter(8)

출력:

0
1
1
2
3
5
8
13

재귀 함수를 사용하여 Python에서 피보나치 시퀀스 생성

재귀 함수는 자신을 호출하는 함수이며 이러한 메서드는 시간 복잡성을 줄이면서 더 많은 메모리를 사용할 수 있습니다. 이러한 함수를 생성하여 피보나치 수를 반환하고for루프를 사용하여 필요한 시리즈를 인쇄 할 수 있습니다.

예를 들면

def rec_fib(n):
    if n > 1:
        return rec_fib(n - 1) + rec_fib(n - 2)
    return n


for i in range(10):
    print(rec_fib(i))

출력:

0
1
1
2
3
5
8
13
21
34

동적 프로그래밍 방법을 사용하여 Python에서 피보나치 시퀀스 생성

동적 프로그래밍은 문제를 하위 문제로 나누고 이러한 하위 문제의 값을 저장하여 해결책을 찾는 방법입니다. 이 방법은 일반적으로 문제를 최적화하는 데 사용되며 아래와 같이 피보나치 시퀀스를 생성하는 데 사용할 수 있습니다.

def fibonacci(num):
    arr = [0, 1]
    if num == 1:
        print("0")
    elif num == 2:
        print("[0,", "1]")
    else:
        while len(arr) < num:
            arr.append(0)
        if num == 0 or num == 1:
            return 1
        else:
            arr[0] = 0
            arr[1] = 1
            for i in range(2, num):
                arr[i] = arr[i - 1] + arr[i - 2]
            print(arr)


fibonacci(10)

출력:

[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]

시퀀스는이 메서드에서 배열에 저장됩니다.