백준 10870번 - 피보나치 수 5 (Python3)
코드
pibo = [0, 1]
n = int(input())
def _pibo(n):
pibo.append(pibo[-2] + pibo[-1])
if n == 0:
return 0
if n == 1:
return 1
if len(pibo) == n + 1:
return pibo[-1]
return _pibo(n)
print(_pibo(n))
문제 해설
피보나치 수 자체가 0과 1로 시작하기 때문에 피보나치 수열을 담을 리스트에 0과 1을 미리 넣고 마지막 두 요소의 합이 새로운 피보나치 수열의 요소가 되므로
pibo.append(pibo[-2] + pibo[-1])
위와 같이 구현
피보나치 수열의 길이와 입력 받은 숫자 n+1의 길이가 같아질 때까지 재귀적으로 함수 자신을 호출하고 같아 지면 n번째 숫자 즉, 맨 마지막 요소를 출력하면 문제의 정답을 구할 수 있으므로
if len(pibo) == n + 1:
return pibo[-1]
위와 같이 구현
댓글남기기