문제
10870 피보나치 수 5
답
1. kotlin code: 재귀
fun main() {
q10870()
}
fun q10870() {
val n = readln().toInt()
println(fibonacci(n))
}
fun fibonacci(n: Int): Int = when(n) {
0, 1 -> n
else -> fibonacci(n - 1) + fibonacci(n - 2)
}
2. kotlin code: 꼬리 재귀
fun main() {
q10870()
}
fun q10870() {
val n = readln().toInt()
println(fibonacciWithTailRec(n))
}
tailrec fun fibonacciWithTailRec(n: Int, a: Int = 0, b: Int = 1): Int = when(n) {
0 -> a
1 -> b
else -> fibonacciWithTailRec(n - 1, b, a + b)
}