이전 게시글 : [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))
[Python 업다운, Up & Down] 파이썬을 활용한 업 다운 게임 (0) | 2022.03.30 |
---|---|
[Python 유클리드호제법 및 팩토리얼] 최대 공약수 및 팩토리얼 재귀함수 적용 전과 적용 후 (0) | 2022.02.13 |
[Python 유클리드 호제법] 최대 공약수, 최대 공배수 구하기 (0) | 2022.02.11 |
[Python 재귀 알고리즘] 팩토리얼 구하기 (0) | 2022.02.11 |
[Python 오름차순 정렬] Sort 함수 사용하지 않고 정렬하기 (0) | 2022.02.02 |