코틀린 인 액션에 다음과 같은 목차가 있다.
* 5장 람다로 프로그래밍
↳ 5.3 지연계산(lazy) 컬렉션 연산
↳ 5.3.2 시퀀스 만들기
↳ 리스트 5.12 자연수의 시퀀스를 생성하고 사용하기
리스트 5.12가 다음과 같았다.
val allNumbers = generateSequence(0) { it + 1 }
val numbers100 = allNumbers.takeWhile { it <= 100 }
println(numbers100.sum())
혹시 그럼 generateSequence()
함수로 피보나치 수열을 만들어 볼 수 있지 않을까 싶어서
한번 구현 시도해보았다.
// 무한 피보나치 수열 생성
val fibo = generateSequence(Pair(0, 1)) { Pair(it.second, it.first + it.second) }.map { it.first }
val fiboNumbers = fibo.takeWhile { it <= 100 } // 100이전의 수까지 반환
fiboNumbers.forEach { println(it) } // 0 1 1 2 3 5 8 13 21 34 55 89
재미삼아 코딩해보았다.