알고리즘(재귀 용법)

Viva의 놀이터·2021년 1월 15일
0

알고리즘

목록 보기
9/14
post-thumbnail

재귀 용법

재귀 용법 (recursive call)

재귀 용법은 쉽게 말해서 팩토리얼이라고 생각하면 된다. 함수의 반환값이 함수인 경우

5! = 5 x 4 x 3 x 2 x 1
6! = 6 x 5 x 3 x 2 x 1 = 6 x 5! = 6 x 5 x 4!
n! = n x (n-1) x (n-2) x (n-3)! = n x (n-1)!

이것을 코드로 표현해보면 다음과 같다.

def reCal(num):
	if num <= 1:
    	return 1
    return num * reCal(num-1)	

이렇게 함수에서 함수를 리턴해저 반환해주는 것이 재귀 용법이고 각각의 함수들은 스택처럼 쌓여있어 차례대로 반환값이 들어오면 계산을 마친다.

스택 처럼 쌓여 반환 값이 들어오면 쌓인 스택대로 순서대로 연산되어 반환된다.

재귀 용법을 사용한 회문 체크

재귀 용법을 사용하여 회문 체크를 하는 예제를 만들어보자(회문은 거꾸로 읽어도 같은것: 스위스 기러기)

def checkRev(data):
    if len(data) <= 1:
        return True
    if data[0] == data[-1]:
        return checkRev(data[1:-1])
    else:
        return False

재귀 용법의 코드는 모두 비슷한 패턴을 지닌다.

def reCal(num):
	if num <= 1:
    	return 1
    return num * reCal(num-1)	
profile
역사를 잊은 기술에겐 미래가 없다

0개의 댓글