팩토리얼 (계승)
- n보다 작거나 같은 모든 양의 정수의 곱
- 반복문으로 팩토리얼 구하기
- 재귀 : 자기 자신을 호출하는 것
- 재귀함수로 팩토리얼 구하기
피보나치 수열 (토끼가 번식하는 규칙)
- 처음에는 토끼가 한 쌍만 존재한다.
- 두 달 이상 된 토끼는 번식할 수 있다.
- 번식 가능한 토끼는 매달 새끼를 한 쌍씩 낳는다.
- 토끼는 죽지 않는다.
global 키워드
- 함수 내부에서 함수 외부에 있는 변수를 참조하게 하는 기능을 제공
global 변수이름
- global로 함수를 정의하지 않는다면 UnboundLocalError가 남
-UnboundLocalError : 할당되지 않은 변수값을 참조하려고 시도할 때 발생하는 예외
재귀 함수의 문제
- 상황에 따라서 기하급수적으로 반복 호출
- 트리 내부에 있는 각각의 노드 값을 계산하려면 덧셈을 한 번씩 수행해 하는데, 한 번 구했던 값이라도 처음부터 다시 계산해야하는 문제가 발생
- 트리 (tree)
- 노드 (node) : 각 지점
- 리프 (leaf) : 노드 중 가장 마지막 단계 지점
메모화 (memoization)
- 이전에 계산한 값을 메모리에 저장하여 중복 계산을 제거하여 전체적인 실행 속도를 빠르게 해주는 기법
- 재귀 함수를 사용하며 코드가 빠르게 실행되려면?
- 같은 값을 한 번만 계산하도록 코드를 수정
메모 (memo)
- 딕셔너리를 사용해서 한 번 계산한 값을 저장
- 처리 수행하지 않고 메모된 값을 돌려주며 코드 속도 향상
- 메모화는 재귀함수와 자주 함께 사용하여 실행 후 곧바로 결과를 출력
조기 리턴 (early return)
- 함수 흐름의 중간에 return 키워드를 사용하여 함수를 조기에 종료하는 프로그래밍 패턴
- 과거에는 프로그램의 흐름 끝에서 return을 실행
- if else 조건문을 만들고 각각의 마지막 부분에서 리턴
리스트 평탄화
- 중첩된 리스트가 있을 때 중첩을 모두 제거하고 풀어서 1차원 리스트를 만드는 것
- 재귀 함수를 사용하여 해결
가독성이 좋은 코드 작성하기
- 쉽게 읽을 수 있는 코드
- 주석을 잘 사용한 코드
- 함수를 활용한 코드
유지보수를 좋게 하는 코드 작성하기
- 상수는 변수에 저장하여 취급
- 패턴이 반복되는 코드는 함수로 구현