해결된 질문
작성
·
60
·
수정됨
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
안녕하세요. 타이거님!
공유주신 코드는 잘 짜셨으나, 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)
또 궁금하신 점 있으시면 언제든 질문 부탁드립니다.
감사합니다. :)