带有 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)
}
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)
}