목록언어/Java&Kotlin (14)
Simple&Natural
스코프함수 정리
let (it/lambda) : 지정된 값이 null이 아닌 경우에 코드를 실행해야하는 경우 with/run (this/lambda) : 여러 줄의 코드 처리, 객체 초기화 후 결과값 계산 apply (this/object) : 수신 객체 람다 내부에서 수신 객체의 함수를 사용하지 않고(프로퍼티만 변경) 수신 객체 자신을 다시 반환하려는 경우에 apply를 사용 (객체 초기화 등) also (it/object) : 수신 객체 람다가 전달된 수신 객체를 전혀 사용하지 않거나 수신 객체의 속성을 변경하지 않고 사용 하는 경우 also를 사용 (객체를 활용한 추가적인 작업, 디버깅, 로깅 등...)
언어/Java&Kotlin
2020. 2. 25. 07:04
꼬리재귀(Tail Recursion)
피보나치 수열이나 팩토리얼을 구현하다보면 가장 많이 쓰이는 것이 재귀함수이다. 그러나 재귀함수의 경우 필연적으로 메모리 스택을 많이 잡아먹기 때문에 재귀함수를 잘못 쓰다보면 스택오버플로우와 인사하게 된다. 이문제를 해결하기 위해서는 Tail Recursion이라는 꼬리재귀 함수를 사용하면 된다. 재귀함수 경우 마지막 함수가 모두 실행되기 전까지 이전의 함수들이 계속 메모리 스택을 차지하고 있게 되는데 원래 함수로 다시 돌아올 필요가 없는 경우 꼬리재귀 함수를 쓰면 값만 반환한 후 스택에서 사라진다.
언어/Java&Kotlin
2020. 1. 22. 00:12