memostack
article thumbnail
블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.tistory.com/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
반응형

팩토리얼 문제

1부터 n 까지의 곱, 팩토리얼(factorial)을 구하기

 

  • 1! = 1
  • 2! = 1 * 2
  • 3! = 1 * 2 * 3

예제. 팩토리얼 구하기

아래 예제는 unittest 기반으로 작성했습니다. 그렇다고 알고리즘을 파악하는데 어려움은 없을것 같습니다.

팩토리얼을 구하는 방법에는 2가지 방법이 있다.

  1. test1(): 단순히 for 문을 이용하여 팩토리얼을 구한다.
  2. test2(): 재귀함수(recursive)를 이용하여 팩토리얼을 구한다.
    1. 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

반응형
블로그를 이전하였습니다. 2023년 11월부터 https://bluemiv.tistory.com/에서 블로그를 운영하려고 합니다. 앞으로 해당 블로그의 댓글은 읽지 못할 수 도 있으니 양해바랍니다.
profile

memostack

@bluemiv_mm

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!