TIL

190428_TIL(재귀코드 읽는 방법, 새로운 언어 공부법, 기타 내용)

오늘은 책에서 도움이 될만한 내용과 지난주 강사님이 해주신 말씀 중 도움이 될만한 내용을 가볍게 정리해 보려한다.

재귀코드 읽는 방법

  1. 기저 조건이 무엇인지 찾는다.
  2. 기저 조건을 다룬다는 가정하에 함수를 분석한다.
  3. 기저 조건 바로 조건을 다룬다는 가정하에 함수를 분석한다.
  4. 한 번에 한 조건씩 올라가면서 계속 분석한다.

예시 코드(피보나치 수)

1
2
3
4
5
6
7
8
def fibonacci(n):
if n==1:
return 0
elif n==2:
return 1
return fibonacci(n-1)+fibonacci(n-2)

print(fibonacci(4))

위 재귀코드에 재귀코드 읽는 방법을 적용해보자.

  1. 기저조건이 무엇인지 찾기

    함수가 자기 자신을 호출하지 않는 조건인 다음 코드가 기저조건이다.

1
2
3
4
if n==1:
return 0
elif n==2:
return 1

​ n이 1 또는 2일 때가 기저 조건이다.

  1. 기저 조건을 다룬다는 가정하에 함수 분석하기

    이제 기저 조건인 fibonacci(1)fibonacci(2)를 처리한다.

    fibonacci(1)fibonacci(2)을 호출하면 모두 기저 조건이므로 재귀가 일어나지 않고 단순히 if문을 실행하여 01을 반환한다.

  • fibonacci(1) returns 0
  • fibonacci(2) returns 1
  1. 기저 조건 바로 전 조건을 다룬다는 가정하에 함수 분석하기

    기저 조건 바로 전 조건은 바로 fibonacci(3) 이다.

    fibonacci(3)을 호출하면 fibonacci(2)+fibonacci(1)를 반환한다.

    이전 분석에서 fibonacci(1) 과 fibonacci(2)가 각각 01을 반환하는 것을 확인했다.

    따라서, fibonacci(3)은 0 + 1, 즉 1을 반환한다.

  1. 한 번에 한 조건씩 올라가면서 계속 분석하기

    fibonacci(4)를 호출하면, fibonacci(3)+fibonacci(2), 즉 2를 반환하고

    마찬가지로 fibonacci(5)를 호출하면 fibonacci(4)+fibonacci(3)이 되어 3을 반환한다.


새로운 언어 공부 방법

  1. 자료형
  2. 연산자
  3. 제어문, 반복문
  4. 함수

    • call by reference, call by value, call by object reference 지원여부
    • First class function 지원여부
  5. Class

    • Encapsulation 지원여부
    • Inheritance 지원여부
    • Virtual function 지원여부


기타내용

정리하지는 못하였지만 알아두면 좋을 내용들

참고자료

참고도서

  • 누구나 자료구조와 알고리즘
Share