본문 바로가기
공부/백준

[백준] 17478번

by _음주토끼_ 2022. 6. 15.

재귀함수가 뭐냐고 묻는 횟수만큼 이야기 보따리 하나를 풀며 마지막에 답변해주는 재귀함수 자동봇(?)이다.

함수 내에서 자기 자신을 호출하는 함수(횟수+1)을 하면 반복문 i++의 효과를 낼 수 있다.

그리고 재귀함수를 종료할 때는 최종으로 출력된 재귀함수부터 역순으로 종료한다.

어디서 많이 본 구조같은 이야기다. 선입후출(FILO)이다.

FILO의 대표적인 자료구조는 stack! 가장 먼저 들어온 녀석부터 고인물이 된다.

재귀함수도 마찬가지다. 그 성질을 이용해서 출력 결과를 보며 어떤 순서로 넣고,

어떤 조건에서 최종 답변을 출력할지 정한다.

처음에 큰따옴표를 안 써야하는 곳에 여러번 써서 결과가 왜 틀린줄도 모르고 맞왜틀이라며 와르르 제출했다.

순서는 바로 이것!

## 숫자는 0부터 시작!

"재귀함수가 뭔가요?"

"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.

마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.

그의 답은 대부분 옳았다고 하네. 그런데 어느날, 그 선인에게 한 선비가 찾아와서 물었어."

## 이후 재귀함수가 호출된다. +1번째가 된다.

____"재귀함수가 뭔가요?"

## 만약 n이 1이라면, 여기서 if문 안으로 들어가게 된다.

____"재귀함수는 자기 자신을 호출하는 함수라네"

____라고 답변하였지.

## 그럼 이제 호출이 다 끝난 셈이고, 다음 줄로 넘어가 남아있는 0번째 재귀함수를 종료하기 시작한다.

라고 답변하였지.

그럼 함수를 만들었으니 n을 받아 이 함수를 실행시켜주면 된다.

단, 함수에 n을 넣는 것이 아니라 i는 반복문처럼 0부터 시작하고, 조건문에 n을 이용하면 된다.

이걸 풀고나니 속이 다 후련하다.

 

'공부 > 백준' 카테고리의 다른 글

[백준] 1252번  (0) 2022.06.15
[백준] 2417번  (0) 2022.06.15
[백준] 17298번  (0) 2022.06.15
[백준] 2460번  (0) 2022.06.15
[백준] 25191번  (0) 2022.06.15