재귀함수는 아직 어렵다. 어떤 구조를 짜야하는지 계속 고민하게 된다.
그래도 얼추 대강 짜서 통과는 할 수 있었다.
솔직히 대강 짠거라 안좋은 코드인줄 알았으나 속도가 빠르다는 장점이 있었다.
n = int(input())
def pibo(a,b,num):
c = a+b
if num == 0:
return 0
elif num <= 2:
return c
a = b
b = c
return pibo(a,b,num-1)
print(pibo(0,1,n))
아래는 다른 사람들의 코드이다. 아주 간결하고 짧다. 솔직히 이런코드 어떻게 짜는지 진짜 대단한거 같다.
def pibo(n):
if n < 2: return n
return pibo(n-1) + pibo(n-2)
print(pibo(int(input())))
pibo안으로 계속해서 값을 거미줄처럼 펼쳐나가는거 같다.
만약 n에 5가 들어가면 다음 그림과 같이 함수가 실행된다. 따라서 pibo(1)에서 반환되는 1값을 5번 더하면 결과적으로 5가 반환되는 것이다.
'알고리즘' 카테고리의 다른 글
백준 11729 풀이 (하노이탑) (0) | 2021.02.11 |
---|---|
백준 2447 풀이 (재귀함수, 별찍기 - 10) (0) | 2021.02.10 |
백준 10872 풀이 (재귀함수, 팩토리얼) (0) | 2021.02.10 |
#3 알고리즘 공부 2/8 리뷰 (0) | 2021.02.08 |
백준 9020 풀이 (골드바흐의 추측 ) (0) | 2021.02.08 |