具有终止值的序列

Sequence with stopping values

这就像一个常规的 tribonacci 序列,但是,我希望序列在项处于最小值或最大值时停止。

这是我开始的

sequence <- function(a1=0, a2=0, a3=1, min=0, max=30) {
  an <- c()
  a[1] <- a1
  a[2] <- a2
  a[3] <- a3
  while(a <= max || a >= min) {
    a[i] <- a[i-1] + a[i-2] + a[i-3]
    an <- c(an, a[i])
  }
  an
} 

对于我的代码设置以及如何修复索引有什么建议吗?

这是一种使用 abs() 进行编码的方法:

tribonacci <- function(start=c(0, 0, 1), maxval=15) {
    a <- start
    i <- 3
    while(abs(a[i]) <= maxval) {
        i <- i + 1
        a[i] <- a[i-3] + a[i-2] + a[i-1]
    }
    a[1:(i-1)]
}

tribonacci(maxval=24)
# [1]  0  0  1  1  2  4  7 13 24
tribonacci(start=c(0, 1, -3), maxval=30)
# [1]   0   1  -3  -2  -4  -9 -15 -28

因为我们使用的是绝对值,所以我们只需要一个参数来指定maximum/minimum。