취준일기

[TIL_알고리즘] 재귀호출(Recursion)

둉영 2020. 11. 16. 12:34

재귀호출: 무한 자기자신으로 돌아옴

 

factorial 

1!=1 #basecase 호출이 끝날 수 있는 제약조건

2!=2*1  =2

3!=3*2*1 = 3*2! =6

4!=4*3*2*1 =4*3! =24

5!=5*4*3*2*1 =5*4! =120

 

6의 팩토리얼? 6*(6-1)!

n의 팩토리얼? n*(n-1)!

 

n!=n*(n-1)!


def fact(n):

  if n==1:return 1

  return n*fact(n-1)

 

print(fact(4))  #24

 

 


def ONE():

  print("첫번째")

  TWO() #함수호출

  print("다섯번째")

 

def TWO():

  print("두번째")

  THREE() #함수호출

  print("네번째") # 끝나고 stack에 보관되어있던 ONE()으로 이동 pop()

 

def THREE():

  print("세번째") #끝나고 stack 에 보관되어있던 TWO()로 이동 pop()

 

ONE()

 

#첫번째

#두번째

#세번째

#네번째

#다섯번째

 


def Solve(count): #count를 1씩 줄여가며 0이 나올때 까지 반복

  if count==0:return

  print("재귀호출",count)

  Solve(count-1)

 

Solve(3)

 

#재귀호출 3

#재귀호출 2

#재귀호출 1

 

def Solve(count): 

  if count==0:return

  Solve(count-1) #순서 변경 count가 0이 되고 다시 재귀호출하여 1부터 3까지 호출

  print("재귀호출",count)

 

Solve(3)

 

#재귀호출 1

#재귀호출 2

#재귀호출 3