재귀함수

Lipton·2021년 12월 11일

알고리즘

목록 보기
5/6

재귀함수

재귀(Recursion)은 어떠한 것을 정의할 때 자기 자신을 참조하는 것을 뜻한다.

재귀 함수는 바로 자기 자신을 호출하는 함수

재귀함수를 사용하는 이유
-> 재귀 함수를 이용해서 간결하고 효율성 있는 코드 작성 가능

카운트다운 코드(재귀함수)

# 재귀함수
# 재귀함수를 무한번 반복하게 만들면 에러 남
# 탈출 조건이 있어야 한다.

def count_down(number):
    if number < 0:
        return
    print(number)          # number를 출력하고
    count_down(number - 1) # count_down 함수를 number - 1 인자를 주고 다시 호출한다!


count_down(60)

팩토리얼

팩토리얼은 1부터 어떤 양의 정수 n까지의 정수를 모두 곱한 것을 의미합니다.

예를 들면 아래와 같습니다!
3! 은 3 2 1 = 6,
4! 는 4 3 2 1 = 4 3! = 24

즉,
Factorial(n) = n Factorial(n - 1)
Factorial(n - 1) = (n - 1)
Factorial(n - 2)
....
Factorial(1) = 1
의 구조입니다.

반복되는 구조라서, 재귀적으로 쓸 수 있다.

Factorial(n) = n Factorial(n - 1)
Factorial(n - 1) = (n - 1)
Factorial(n - 2)
....
Factorial(1) = 1
이므로, 이를 코드화 시키면 다음과 같다.

def factorial(n): 
    if n == 1:
        return 1
    return n * factorial(n-1)

print(factorial(5))

# 5 * 4 * 3 * 2 * 1

120

회문 검사

회문은 똑바로 읽으나 거꾸로 읽으나 똑같은 단어나 문장을 의미

  • 토마토
  • 오디오
  • 아시아
  • 일요일

회문검사 일반적인 방법

input = "abcba"

def is_palindrome(string):
    n = len(string)
    for i in range(n):
        if string[i] != string[n - 1 - i]: #문자열 맨 앞과 뒤가 같은지 검사
            return False
    
    # 마지막까지 False가 반환이 안되었으면
    return True

print(is_palindrome(input))

재귀함수 방법
문제가 축소되는 경향일 때

input = "abcba"


def is_palindrome(string):

    # 한 글자 이하면 true
    if len(string) <= 1:
        return True

    # 앞뒤가 다르면 false
    if string[0] != string[-1]: 
        return False

    return is_palindrome(string[1:-1])


print(is_palindrome(input))
profile
Web Frontend

0개의 댓글