목록Android/Kotlin (2)
차근차근

0. 변수 값을 담는 상수, 변수는 val, var로 시작한다. val은 final로 값을 바꿀 수 없다. var는 값을 바꿀 수 있다. 타입을 정해줄때는 var hello2: String = "hello world2" 와 같이 :뒤에 붙여준다. 그런데 var hello2 = "hello world2"는 타입이 String임을 짐작할 수 있다. 따라서 :String을 생략할 수 있다. var hello3: String? 에서 ?는 null값이 올 수 있음을 알려주는 기호이다. 1. 배열 & 반복 & 캐스팅 listOf를 사용하여 배열을 만들 수 있다. 수정이 불가능하다. mutableListOf를 사용하여 배열을 만들 수 있다. 수정이 가능하다. 반복문의 기본 형태 : for(요소 in 배열) for문의..

0. 꼬리 재귀 함수 기존의 재귀함수는 모든 재귀 호출이 완료될 때까지는 결과를 얻을 수 없었으나, 꼬리 재귀에서는 계산이 먼저 수행되고, 재귀 호출이 수행되는 구조이다. 컴파일러가 stackoverflow가 발생하지 않도록 효율적인 순환 기반의 버전으로 최적화 해준다. 마지막으로 수행하는 구문이 자신을 호출하는 구문이어야 하며 재귀 호출 후 다른 코드가 있으면 사용할 수 없다. 꼬리 재귀 함수를 사용하지 않는 경우는 아래와 같은 경우인데 n*factorial(n - 1) 이 마지막 작업이 아니기 때문이다. 다음은 fibonacci(n-1, b, a+b)를 마지막 작업으로 두고 작성한 함수이다. 이미지 2에서 n에 100을 대입하면 정상 작동한다. 그러나 10000을 대입하면 StackOverflow가 ..