웹쟁이의 일상

[Python] 팩토리얼 구하는 알고리즘(Feat.재귀함수) 본문

Python

[Python] 팩토리얼 구하는 알고리즘(Feat.재귀함수)

jellyChoi 2019. 6. 24. 19:49

1부터 n까지 연속한 정수의 곱을 구하는 알고리즘을 만들어 봅시다.

 

안녕하세요~ 오늘의 포스팅 주제는 팩토리얼을 구하는 알고리즘을 만들어 보는 것입니다.

 

문과출신인 저는 학교를 졸업한지 10년이 넘어서 팩토리얼이 뭔지 가물가물 한데요,

 

맨 위에 써져있듯 1부터 n까지 연속한 정수의 곱을 팩토리얼이라고 합니다. 

 

표기법은 숫자 뒤에 !(느낌표)를 붙여 사용하는데, 예를 들어 5팩토리얼은 5!라고 표현합니다.

 

5! = 1*2*3*4*5 가 되는 것이죠. 한글로는 '계승' 이라고 한답니다.

 

그럼 바로 코드로 확인해보겠습니다.

 

def get_factorial():
	multi = 1
    for i in range(1, n+1):
    	multi = multi * i
    return multi

1부터 n까지의 합을 구하는 알고리즘을 살짝 고치면 만들 수 있는 아주 간단한 함수입니다.

 

하지만 이 방법 말고 재귀 호출을 사용해서 알고리즘을 만들어 보겠습니다.

 

그 전에 재귀 호출이 뭔지 알아야겠죠?

 

재귀호출이란 어떤 함수 안에서 자기 자신을 부르는 것을 말합니다.

 

def recursive():
	print("hello wolrd!")
    recursive()

위의 함수처럼 어떠한 함수 안에서 자기 자신을 호출하는 함수를 재귀함수 라고 합니다.

 

하지만 위의 함수는 브레이크되는 부분이 없기 때문에 저대로 실행을 하면 무한루프에 빠져 컴퓨터가 말을 듣지 않게 됩니다.

 

마치 반복문에서 break를 걸어주지 않으면 영원히 반복문이 끝나지 않는 것 처럼,

 

재귀함수에서도 종료 조건을 걸어줘서 함수를 어떠한 조건에서 끝내줘야 합니다.

 

특정 조건을 만족하면 더이상 자기자신을 호출하지 않도록 설계해야 무한루프의 늪에서 빠져나올 수 있습니다.

 

그럼 재귀함수를 써서 팩토리얼을 구하는 알고리즘을 만들어 보겠습니다.

 

def recurcive_factorial(n):
	if n<=1:
    	return 1
    return n * recursive_factorial(n-1)

반환되는 부분에 자기 자신을 호출하면서 연산을 합니다.

 

오늘은 아주 간단하게 팩토리얼을 구하는 알고리즘에 대해 알아보았습니다.

Comments