[TIL] 0421

yoon Y·2022년 4월 23일
0

2022 - TIL

목록 보기
80/109

재귀 알고리즘 학습

재귀함수란?

  • 자기 안에서 자신을 부르면 해당 함수가 복사되어 실행되는 것
    (실행컨택스트가 만들어지는 것)
  • 실행실행실행실행 - 리턴리턴리턴리턴 재귀함수가 호출된 곳으로 돌아감
  • 수열, 규칙적이지만 복잡한 반복에 사용할 수 있다.
  • 재귀 함수는 결국 반복을 위한 것이다.

풀이법

  1. 문제를 파악해 근본적인 수식을 찾아낸다.
  2. return에 수식을 적는다.
  3. 재귀 안 거치고 그냥 나올 수 있는 값(작은 값)을 먼저 리턴해서 그걸로 수식이 맞는지 확인해본다.

값을 리턴하지 않는 경우

  • 탈출 조건
  • 반복할 실행문
  • 어떤 조건으로 재귀할건지
    • 전위 인지 후위 인지

리턴 값으로 재귀를 하는 경우

  • 다른 연산 다 재쳐두고 재귀먼저 실행됨
  • 리턴을 이용한다는 것을 숫자를 들어온 인수를 역순으로 먼저 계산하는 것
  • 리턴은 나중 일 - 돌아올 때 하는 것
  • 파고들었다가 나오는 것까지 생각해야함

코드 실행 시점

재귀함수 실행문 이전에만 실행코드가 있다 - 파고 들어갈 때 실행됨 (전위순회)

재귀함수 실행문 이후에 실행코드가 있다 - 파고 들어갔다가 나올 때 실행됨 (후위 순회)

리턴문을 이용한 재귀

  • 리턴문은 재귀함수 실행문 이후에 로직이 있는 것이므로 - 후위 순회
  • 리턴을 한다는 것은 함수가 하나씩 끝날 때 반환된 값이 이전 함수 안에서 재귀함수 실행문 자리에 있게 되는 것
  • 리턴을 하면 함수 각각의 실행 결과를 전달할 수 있다.

팩토리얼과 피보나치

  • 팩토리얼은 전 값의 결과만 알아서 나랑 곱하면 되고,
  • 피보나치는 전전과 전의 값을 알아내야한다. - 그렇기에 중복 계산이 발생한다
profile
#프론트엔드

0개의 댓글