Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
36
Task/Fibonacci-sequence/Kotlin/fibonacci-sequence.kotlin
Normal file
36
Task/Fibonacci-sequence/Kotlin/fibonacci-sequence.kotlin
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
enum class Fibonacci {
|
||||
ITERATIVE {
|
||||
override fun get(n: Int): Long = if (n < 2) {
|
||||
n.toLong()
|
||||
} else {
|
||||
var n1 = 0L
|
||||
var n2 = 1L
|
||||
repeat(n) {
|
||||
val sum = n1 + n2
|
||||
n1 = n2
|
||||
n2 = sum
|
||||
}
|
||||
n1
|
||||
}
|
||||
},
|
||||
RECURSIVE {
|
||||
override fun get(n: Int): Long = if (n < 2) n.toLong() else this[n - 1] + this[n - 2]
|
||||
},
|
||||
CACHING {
|
||||
val cache: MutableMap<Int, Long> = mutableMapOf(0 to 0L, 1 to 1L)
|
||||
override fun get(n: Int): Long = if (n < 2) n.toLong() else impl(n)
|
||||
private fun impl(n: Int): Long = cache.computeIfAbsent(n) { impl(it-1) + impl(it-2) }
|
||||
},
|
||||
;
|
||||
|
||||
abstract operator fun get(n: Int): Long
|
||||
}
|
||||
|
||||
fun main() {
|
||||
val r = 0..30
|
||||
for (fib in Fibonacci.values()) {
|
||||
print("${fib.name.padEnd(10)}:")
|
||||
for (i in r) { print(" " + fib[i]) }
|
||||
println()
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue