[코틀린기초] 19. 중위 함수와 재귀함수

중위 함수

## 중위 표현법

클래스의 멤버 호출 시 사용하는 점(.) 을 생략하고 함수이름 뒤에 소괄호를 생략해 직관적인 이름을 사용하는 표현법

## 중위 함수의 조건

  fun main(){
    val multi = 2 multiply 10   // 중위표현법으로 연산자처럼 사용될 수 있다.
    println("multi: $multi")
  }
  
  infix fun Int.multiply(x:Int) : Int {
    return this * x //this는 Int로 받아온 값이 됨. x가 아님
  }

꼬리 재귀 함수

## 재귀란

재귀는 자기 자신을 다시 참조

재귀함수는 자기 자신을 계속 호출하는 특징

## 꼬리 재귀 함수

스택에 계속 쌓이는 방식이 아닌 함수가 계속 씌워지는 꼬리를 무는 형태

스택 오버플로우가 나지는 않음

코틀린 고유의 tailrec 키워드를 사용해 선언

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