기타/What I Learned
[TIL] Kotlin - 중위/꼬리재귀 함수
가죽방패
2022. 2. 4. 15:13
※ 중위 표현법(infix notation)
- 클래스의 멤버 호출 시 사용하는 점(.)을 생략하고 함수 이름 뒤에 소괄호를 생략해 직관적인 이름이 사용가능한 표현
- 중위 함수의 조건
- 멤버 메소드 혹은 확장 함수여야 한다
- 하나의 매개변수를 가져야 한다
- infix 키워드를 사용해 정의한다
※ 꼬리 재귀(recursion) 함수
- 재귀? - 자기 자신을 다시 참조하는 것, 재귀 함수는 자기 자신을 계속 호출한다는 특징이 있다
스택에 계속 쌓이는 방식이 함수가 계속 씌워지는 꼬리를 무는 형태이며 코틀린 고유의 tailrec 키워드를 사용해 선언
또한, 코틀린에선 꼬리 재귀 함수를 통해 스택 오버플로 현상을 해결할 수 있는데 이는 스택에 계속 쌓이는 방식이 아닌 꼬리를 무는 형태로 반복이 된다. 이를 위해서 tailrec 키워드를 사용해야 하는 것이다
- 재귀 함수의 필수 조건
- 무한 호출에 빠지지 않도록 탈출 조건을 만들어 둔다
- 스택 영역을 이용하여 호출 횟수를 무리하게 많이 지정해 연산하지 않는다
- 코드를 복잡하지 않게 한다