본문 바로가기
Algorithm

[구현/재귀함수] 백준 17478 재귀함수가 뭔가요? - Python

by jangThang 2022. 2. 8.
반응형

백준 온라인 저지

 

[ Contents ]

     

     

    1. 문제 (링크 참조)

     

    17478번: 재귀함수가 뭔가요?

    평소에 질문을 잘 받아주기로 유명한 중앙대학교의 JH 교수님은 학생들로부터 재귀함수가 무엇인지에 대하여 많은 질문을 받아왔다. 매번 질문을 잘 받아주셨던 JH 교수님이지만 그는 중앙대

    www.acmicpc.net

     

     

     

    2. 문제 풀이

     한 번 풀면 재귀함수의 정의를 잊어버릴 수 없는 문제입니다. 

     

    재귀함수(Recursion Function): 함수 내에 자기 자신을 다시 호출하는 함수

     재귀함수는 자기 자신을 호출하는 함수입니다. 함수 정의부분에 자기 자신을 호출합니다.

     

    def factorial(n):
        if n == 1: # n이 1이면 재귀를 마칩니다.
            return 1
        return n * factorial(n-1)

     재귀함수 대표 예제, 팩토리얼 함수입니다. 마치 반복문처럼 n이 1이 될 때까지 자기자신을 반복해서 호출합니다. 아무런 조건없이 계속 자기 자신만 호출한다면, 무한 루프에 빠지겠죠...

     

    2022.01.19 - [Algorithm] - [Algorithm] 단골 1번 문제, 구현 / 수학

     

    [Algorithm] 단골 1번 문제, 구현 / 수학

    [ Contents ] 1. 구현  단순히 '구현'만 하면 되는 문제 유형입니다. 문제를 이해하고 입력에 맞춰 적절한 출력만 하면 됩니다. 특별한 알고리즘이나 프로그래밍적 기법 없이, 단순 제어문만 사용하

    star7sss.tistory.com

     재귀함수의 특성만 알고 있다면, 쉽게 해결할 수 있습니다.

     

     

    3. 코드

    N = int(input())
    print("어느 한 컴퓨터공학과 학생이 유명한 교수님을 찾아가 물었다.")
    
    # 재귀함수
    def dialog(n):
        underline = "____"*n
        print(underline+"\"재귀함수가 뭔가요?\"")
        if n == N:
            print(underline + "\"재귀함수는 자기 자신을 호출하는 함수라네\"")
            print(underline + "라고 답변하였지.")
            return "end" #종료
        print(underline+"\"잘 들어보게. 옛날옛날 한 산 꼭대기에 이세상 모든 지식을 통달한 선인이 있었어.")
        print(underline+"마을 사람들은 모두 그 선인에게 수많은 질문을 했고, 모두 지혜롭게 대답해 주었지.")
        print(underline+"그의 답은 대부분 옳았다고 하네. 그런데 어느 날, 그 선인에게 한 선비가 찾아와서 물었어.\"")
        dialog(n+1)
        print(underline+"라고 답변하였지.")
    
    dialog(0)

     n회 재귀하면 함수를 마칩니다. n이 N회 재귀를 마쳐야 반환값이 생기며, 앞선 재귀함수를 빠져나오면서 "라고 답변하셨지."가 출력됩니다.  

     

     

    star가 되고나서 Tistory

    반응형

    댓글