20 lines
345 B
Text
20 lines
345 B
Text
func fibonacci_kth_order (n, k = 2) {
|
|
|
|
return 0 if (n < k-1)
|
|
|
|
var f = (1..(k+1) -> map {|j|
|
|
j < k ? 2**j : 1
|
|
})
|
|
|
|
k += 1
|
|
|
|
for i in (2*(k-1) .. n) {
|
|
f[i%k] = (2*f[(i-1)%k] - f[i%k])
|
|
}
|
|
|
|
return f[n%k]
|
|
}
|
|
|
|
for k in (2..9) {
|
|
say ("Fibonacci of k=#{k} order: ", (15+k).of { fibonacci_kth_order(_, k) })
|
|
}
|