인프런 커뮤니티 질문&답변

타이거님의 프로필 이미지
타이거

작성한 질문수

세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)

런타임 에러: 메모리

해결된 질문

작성

·

53

·

수정됨

0

안녕하세요 강사님,

 

재귀함수 이해하기[문제풀이]: BOJ 10870 문제 풀이에서 궁금한 점이 있어 질문드립니다.

 

아래는 제 코드입니다. 백준 제출시 런타임 에러가 발생합니다.

시간 복잡도는 O(n)이 나와서 문제가 없는 듯한데,

재귀 호출이 너무 깊어져서 발생하는 문제인지, 궁금하여 여쭤봅니다.

 

감사합니다.

import sys

input1 = int(sys.stdin.readline())

def fibo(n, n_1, n_2):
    if n == 1:
        return n_1
    else:
        return fibo(n-1, n_1+n_2, n_1)

result = fibo(input1, 1, 0)
print(result)

답변 1

0

알리 Ally님의 프로필 이미지
알리 Ally
지식공유자

안녕하세요. 타이거님!

 

공유주신 코드는 잘 짜셨으나, n이 0인 경우를 고려하지 않으셨습니다.

다음과 같이 n이 0인 경우를 처리하는 조건을 추가해주시면 정답 처리 됩니다.

import sys

input1 = int(sys.stdin.readline())

def fibo(n, n_1, n_2):
    if n == 0:
      return n_2
    if n == 1:
        return n_1
    else:
        return fibo(n-1, n_1+n_2, n_1)

result = fibo(input1, 1, 0)
print(result)

 

또 궁금하신 점 있으시면 언제든 질문 부탁드립니다.

감사합니다. :)

타이거님의 프로필 이미지
타이거

작성한 질문수

질문하기