재귀함수 친해지기 (진짜?)

alsk9624·2024년 8월 6일
0

TIL

목록 보기
20/21

<재귀함수 간단 설명>

  • 자기 자신을 호출하는 함수
  • 종료 조건이 있어야 함

1. 팩토리얼 만들기

정수를 받아 그 정수의 팩토리얼을 계산하는 재귀함수

def factorial_num(n): 
    if n == 1: 
        return 1
   
    else: 
        return n * factorial_num(n-1) 

print(factorial_num(100)) # 코드 확인

🖥️ 코드 해설

def factorial_num(n): 

# 팩토리얼 함수 설정
if n == 1: 

# n 이 1이라면


아, 만약 조건을 안 걸어준다면... (나도 알고 싶지 않았음)


계산할 수 있는 재귀함수의 깊이를 초과했다는 글을 볼 수 있다...

우리는 정수를 받아 그 정수의 팩토리얼을 받아야 하기 때문에 조건을 걸어줘야 한다!

if n == 1: # n이 1이라면

        return 1
        # 1 리턴하기
else: # 아니라면 
        return n * factorial_num(n-1) # n * f(n-1) 
        # n * f(n-1) 리턴하기

나처럼 처음 보고 뭔 소리야? 할 수도 있으니까 좀 더 자세히 설명해보면

    return n * factorial_num(n-1) 
     
    # n-1 * factorial(n-1-1) .... 이런 식으로 점점 작아짐 (이 과정이 반복됨)
    
    # n이 5라면 5*4*3*2*1 ... 이렇게 진행되기 때문

즉 내가 설정한 factroial_num(n) 함수가 실행이 되면
(이때 n에 5가 입력되었다고 생각해보자)

def factorial_num(5): 

[1] 5 * factroial_num(5-1) 실행
	[2] 4 * factroial_num(4-1) 실행
    	[3] 3 * factroial_num(3-1) 실행
        	[4] 2 * factroial_num(2-1) 실행
            	[5] 1 * 1 실행

이렇게 단계별로 설명할 수 있다!

1은 어떡하지?
그래서 아까 if 조건을 걸어줌!!
n이 1이 아닐 때 else 로 넘어갈 테니까....

난 n에 100을 넣어서 실행시켜봤는데

93326215443944152681699238856266700490715968264381621468592963895217599993229915608941463976156518286253697920827223758251185210916864000000000000000000000000

가 나왔다...
잘 굴러감!

profile
앞길에 럭키★비키만 있길 ,,,🍀🫧

0개의 댓글