带有 R 的斐波那契 n 步数序列

Fibonacci n-step number sequences with R

Fibonacci n-step number sequences 是斐波那契数列的概括,您可以将两个以上的前面数字相加。我尝试在 R 中编写一个函数来执行此操作。

首先是经典的斐波那契数列:

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

fib(7)
## [1]  1  1  2  3  5  8 13

接下来是所谓的 Tribonacci 数:

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]
  }
  return(fib)
}

fib3(7)
## [1]  1  1  2  4  7 13 24

等等...

初始值是2的幂,所以n=3是1,1,2,n=4是1,1,2,4,n=5是1,1, 2,4,8 等等。

所以我的想法是即时修改上述函数,尤其是 for 循环中的参数数量,但我对 R 的了解还不足以有效地实现这一点。

我的问题
我怎样才能修改上面的代码来创建任何斐波那契 n 步数列?

附加信息
更多细节和不同的实现可以在这里找到......不幸的是不在 R 中:Rosetta code Fibonacci n-step number sequences

如果用户提供 n(步数)和 starting,一个刚好 n 个起始值的向量,以及 K,所需的数量序列中的元素,您可以执行以下操作。

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)])
 }
 return(sequence)
}