오늘도 개발

위코드 코드카타 Week3 Day5 - 팩토리얼 구하기 본문

자료구조 & 알고리즘/위코드 코드카타

위코드 코드카타 Week3 Day5 - 팩토리얼 구하기

Sueeeeeee 2022. 7. 22. 18:38

문제 

재귀를 사용하여 팩토리얼(factorial)을 구하는 함수를 구현해주세요.

팩토리얼이란 1에서부터 n까지의 정수를 모두 곱한것을 말합니다.

5! = 1 * 2 * 3 * 4 * 5

 

내가 해결한 방식

1!은 1이다.

2!은 1! * 2이다.

3!은 2! * 3이다.

즉, n!은 (n-1) * n이다.

 

팩토리얼이란 1부터 n까지 정수를 곱한 값이므로

n이 1인 경우 더 이상 스스로를 호출하면 안 된다.

1!은 1이므로 n이 1인경우 1을 반환한다.

(0도 인수로 들어올 수 있는데, 0!도 1이므로 n이 1과 같거나 작은 경우라고 작성했다.)

그리고 n이 1이 될 때까지 인수에 n-1을 넣어 스스로를 호출한다.

호출을 마치면 반환값에 n을 곱해서 최종값을 구한다.

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

(재귀 Recursion 포스트 참고)