[재미삼아 코딩] 코틀린 generateSequence로 무한 피보나치 만들어보기

like_ej_·2022년 11월 20일
0

재미삼아 코딩

목록 보기
1/1

코틀린 인 액션에 다음과 같은 목차가 있다.

* 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

재미삼아 코딩해보았다.

profile
안녕하세요~!

0개의 댓글