상세 컨텐츠

본문 제목

[Python 팩토리얼] 팩토리얼 코드 개선 및 재귀함수 적용 전과 적용 후

Python

by donggyu1998 2022. 2. 13. 18:48

본문

반응형

이전 게시글 : [Python 재귀 알고리즘] 팩토리얼 구하기 :: 코딩 연구소 (tistory.com)

 

💡 팩토리얼 추가 설명

팩토리얼은 n * (n-1) * (n*2) * (n*3) ... * 1 이 되는 경우까지 반복한다. 

 

💡 팩토리얼 while loop 코드

 

def f(x):

    num = x
    count = 0
     
    while x-count != 1:
        count += 1
        num *= (x - count)
        
    return num
            
print (f(5))

 

함수 f(x)에 파라미터 x 를 전달받을 경우 num 변수를 통해 x 값을 받는다. 

count 는 while loop 을 돌게 되면서 +1 씩 증가하는 변수이다.

 

이렇게 코드를 작성한 이유는 x 가 5 라는 값을 받게 되는 경우  num 변수를 통해 그 값을 받게된다.

x - count 는 while loop 을 돌면서 5-1, 5-2, 5-3 씩 파라미터 - count 값이 1 이 아닌 경우 while loop 을 돌게된다.

그렇다면 num 은 x 가 5인 경우 5라는 값을 받았기 때문에, 5 * 4 , 5 * 3, 5 * 2 .. (x-count) 가 1이 될 때 까지 반복하면서 num 에 값을 곱하기 때문에 while loop 을 활용한 팩토리얼이 구현된다.

 

💡 팩토리얼 for loop 코드

def f(x): 
    result = 1 
    for val in range(1, x + 1):
        result *= val 
    
    return result

print (f(5))

for loop 을 사용 하는 경우에도 함수 f(x) 를 만든다. 

함수 f(x) 에서는 팩토리얼이 양수만 가능하기 때문에 result 값을 1 받고 시작하게 된다.

for loop 에서는 while loop 과 다르게 들어 오는 값에 대해 result 함수에 반복적으로 곱한 후 return 값을 반환 하면 결과가 나오게 된다.

 

💡 팩토리얼 재귀 함수 코드 개선

def f(x):
    
    if x == 1:
        return 1
    
    else:
        return x * f(x - 1)
    
print (f(5))

 

반응형

관련글 더보기