vonjd vonjd - 15 days ago 4x
R Question

Fibonacci n-step number sequences with R

Fibonacci n-step number sequences is a generalization of Fibonacci numbers where you add more than two of the preceding numbers together. I try to write a function in R that does that.

First the classical Fibonacci numbers:

fib <- function(n){
fib <- vector()
fib[1] <- 1
fib[2] <- 1
for(i in 3:n){
fib[i] <- fib[i-1] + fib[i-2]

## [1] 1 1 2 3 5 8 13

Next the so called Tribonacci numbers:

fib3 <- function(n){
fib <- vector()
fib[1] <- 1
fib[2] <- 1
fib[3] <- 2
for(i in 4:n){
fib[i] <- fib[i-1] + fib[i-2] + fib[i-3]

## [1] 1 1 2 4 7 13 24

and so on...

The initial values are powers of 2, so for n=3 it is 1,1,2, for n=4 it is 1,1,2,4, for n=5 it is 1,1,2,4,8 and so on.

So my idea is to modify the above function on the fly, especially the number of arguments in the for-loop, yet I don't know enough of R to achieve that efficiently.

My question

How can I modify the above code to create any Fibonacci n-step number sequence?

Additional info

Many more details and different implementations can be found here... unfortunately not in R: Rosetta code Fibonacci n-step number sequences


If the user supplies n (the step-number) and starting, a vector of exactly n starting values, and K, the desired number of elements in the sequence, you could do something like the following.

n <- 7
K <- 100
starting <- c(1,1,1,1,1,1,1)

fibn <- function(n, K, starting){
 sequence <- vector(mode='numeric', length=K)
 sequence[1:n] <- starting
 for(i in (n+1):K){
  sequence[i] <- sum(sequence[(i-n):(i-1)])