Fibonacci n-step number sequences是Fibonacci数的推广,您可以将两个以上的数字加在一起。我尝试用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来有效地实现它。
我的问题
如何修改上述代码以创建任何Fibonacci n步数序列?
其他信息
可以在这里找到更多细节和不同的实现......遗憾的是,不在R:Rosetta code Fibonacci n-step number sequences
答案 0 :(得分:3)
如果用户提供了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)
}