Python의 피보나치 수열
- 수학 공식을 사용하여 Python에서 피보나치 수열 만들기
-
for
루프를 사용하여 Python에서 피보나치 시퀀스 생성 - 재귀 함수를 사용하여 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 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