코드

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]

위와 같이 구현

댓글남기기