重复循环中的错误-if / else语句问题

时间:2019-10-31 13:12:19

标签: r

我正试图找到5000之前的最高斐波那契数。这是我到目前为止的代码:

n <- 5000
fib <- c()
fib[1] <- 1
fib[2] <- 1
c <- 1
i <- 3
repeat {
  fib[i] <- fib[i-1] + fib[i-2]
  i <- i+1
  c <- c+1
  if (fib[i]>=5000) {
    break
  }
h <- fib[c]
print(h)
}

我收到的错误是:

Error in if (fib[i] >= 5000) { : missing value where TRUE/FALSE needed

关于如何解决的任何想法?我知道我的代码并不完美,但是我正在学习:)

1 个答案:

答案 0 :(得分:1)

您在陈述前加注ii-1是您要比较的。此外,这不会给您5000之前的最高数字。因此,您必须在break之前再次执行该语句。

n <- 5000
fib <- c()
fib[1] <- 1
fib[2] <- 1
c <- 1
i <- 3
repeat {
  fib[i] <- fib[i-1] + fib[i-2]
  i <- i+1
  c <- c+1
  if (fib[i-1] >= 5000) {
    h <- fib[c]
    print(h)
    break
  }
  h <- fib[c]
  print(h)
}