피보나치수열은 이전 두 값을 더한 값이 다음 값이 되는 수열입니다.
이를 점화식으로 나타내면 다음과 같습니다.
만약 (i)번째 피보나치수열을 구하는 코드를 부족한 실력이지만,
파이썬으로 작성하면 어떻게 될지 알아보겠습니다.
num = [0, 1, 0]
i = 0
n = 2
i = int(input("피보나치 수열의 몇번째 숫자를 출력하시겠습니까? : "))
if i >= 2:
print(f"{num[0]} + 0 = {num[2]}")
while n <= i:
num[2] = num[1] + num[0]
print(f"{num[0]} + {num[1]} = {num[2]}")
num[0] = num[1]
num[1] = num[2]
n += 1
else:
print("Error : 2 이상의 자연수를 입력해주세요.")
print(f"\n{i}번째 피보나치 수열의 값은 {num[2]}입니다.")
언뜻 보면 이해가 어려워보일 수 있어서 부분을 나누어서 알아보겠습니다.
1. 변수 선언부분
num = [0, 1, 0]
i = 0
n = 2
i = int(input("피보나치 수열의 몇번째 숫자를 출력하시겠습니까? : "))
먼저, 피보나치수열의 (n-2) 번째 (n-1) 번째, (n) 번 째 값을 저장하는 변수를 리스트로 작성했습니다.
초기값으로 첫 번째 값과 두 번째 값은 각각 0, 1이기 때문에 미리 넣어두었습니다.
그리고 입력받을 값을 저장하는 변수 i를 선언하고,
input 함수는 문자열로 값을 받기 때문에 연산을 위해 정수형 int로 바꿔줍니다.
그리고 이후 반복문에서 사용할 변수 n을 선언하는데,
1번째(num [0])와 2번째(num [1]) 수열의 값은 이미 정해져 있으므로 n=2 (인덱스2)부터 시작하면 됩니다.
2. 반복문 부분
if i >= 2:
print(f"{num[0]} + 0 = {num[2]}")
while n <= i:
num[2] = num[1] + num[0]
print(f"{num[0]} + {num[1]} = {num[2]}")
num[0] = num[1]
num[1] = num[2]
n += 1
else:
print("Error : 2 이상의 자연수를 입력해주세요.")
print(f"\n{i}번째 피보나치 수열의 값은 {num[2]}입니다.")
먼저 피보나치수열은 2개 이상의 수열에서 의미가 있으므로 그보다 작은 수를 입력하면 에러가 뜨도록 했습니다.
반복문을 이용해서 n = i가 될 때까지 더하기를 반복해주게 됩니다.
먼저 앞의 두 값을 더 해서 num [2]에 저장하고,
num [0]에는 num [1]의 값을 저장하고, num[1]에는 num [2] 값을 저장합니다.
이를 그림으로 나타내면,
파란색 화살표 부분을
num[0] = num[1]
num[1] = num[2]
이 코드가 하게 되는 것입니다.
그래서 마지막으로 계산된 값 num [2]를 출력하게 됩니다.
#코뮤니티_코딩챌린지