Python의 피보나치 수열

Manav Narula 2023년1월30일
  1. 수학 공식을 사용하여 Python에서 피보나치 수열 만들기
  2. for루프를 사용하여 Python에서 피보나치 시퀀스 생성
  3. 재귀 함수를 사용하여 Python에서 피보나치 시퀀스 생성
  4. 동적 프로그래밍 방법을 사용하여 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]

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

작가: Manav Narula
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

관련 문장 - Python Math