블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.github.io/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
반응형
팩토리얼 문제
1부터 n 까지의 곱, 팩토리얼(factorial
)을 구하기
- 1! = 1
- 2! = 1 * 2
- 3! = 1 * 2 * 3
예제. 팩토리얼 구하기
아래 예제는 unittest 기반으로 작성했습니다. 그렇다고 알고리즘을 파악하는데 어려움은 없을것 같습니다.
팩토리얼을 구하는 방법에는 2가지 방법이 있다.
- test1(): 단순히 for 문을 이용하여 팩토리얼을 구한다.
- test2(): 재귀함수(recursive)를 이용하여 팩토리얼을 구한다.
n! = n * (n-1)!
라는 점화식을 이용하여 재귀함수로 풀 수 있다.
# -*- coding: utf-8 -*-
import unittest
class Exam04(unittest.TestCase):
@classmethod
def setUp(cls):
pass
def test1(self):
"""단순히 for 문을 이용하여 팩토리을 구한다."""
n = 5
result = 1
for _ in range(1, n + 1):
result *= _
self.assertEqual(120, result)
def test2_recursive(self):
"""재귀함수를 이용하여 팩토리얼을 구한다."""
def factorial(k):
if k <= 1:
return 1
return k * factorial(k-1)
self.assertEqual(120, factorial(5))
if __name__ == "__main__":
unittest.main()
재귀 함수를 이용할때는 아래와 같은 종료 조건을 꼭 넣어줘야 한다. (종료조건이 없으면 무한 루프를 타게 됨)
def factorial(k)
if k <= 1:
return 1
...
Reference
반응형
'Algorithm' 카테고리의 다른 글
피보나치 알고리즘과 메모이제이션 (with Python3) (0) | 2020.03.17 |
---|---|
최대 공약수와 유클리드 알고리즘 (with Python3) (0) | 2020.03.17 |
집합을 이용한 중복 제거 알고리즘 (with Python3) (0) | 2020.03.16 |
Java 스택(Stack)을 이용해서 순열 구하기 (0) | 2020.02.24 |
Java 멱집합 구하기 (PowerSet) (0) | 2020.02.23 |