중위함수, 꼬리재기 함수

OneTwoThree·2022년 7월 26일
0

부스트코스 코틀린

목록 보기
7/26

[부스트코스]중위함수, 꼬리재기 함수

중위 표현법 infix notation

클래스의 멤버 호출 시 .을 생략하고 함수 이름 뒤 소괄호를 생략해 직관적으로 표현하는 방법

중위 함수의 조건

  • 멤버 메소드 또는 확장 함수여야 한다
  • 하나의 매개변수를 가져야 한다
  • infix 키워드를 사용해서 정의해야 한다.

multiply는 확장함수이고 infix 키워드를 이용해서 정의했다.
따라서 중위 표현법인 3 multiply 10으로 호출 가능하다.

fun main() {
    3 shadow 5
}

infix fun Int.shadow(num : Int):Unit{
    for (i in 1..num){
        print("$this   ")
    }

}

3 3 3 3 3

꼬리 재귀함수

재귀함수

  • 자기 자신을 다시 참조한다
  • 자기 자신을 계속 호출한다
  • 탈출 조건을 만들어 무한 호출을 막아야 한다
  • 호출될 때마다 스택 메모리 공간을 사용하므로 호출 횟수를 조절한다
  • 코드를 복잡하지 않게 한다

꼬리 재귀 함수 tail recursion function

  • 스택에 계속 쌓이는 방식이 함수가 계속 씌워지는 꼬리를 무는 형태
  • tailrec 키워드를 사용해 선언
fun main() {
    println(factorial(5))
}


tailrec fun factorial(num:Int,one:Int=1):Long{
    return if (num==1) one.toLong() else factorial(num-1,num*one)
}

120

0개의 댓글