Ошибка в цикле повтора - если оператор if / else проблема - PullRequest
0 голосов
/ 31 октября 2019

Я пытаюсь найти наибольшее число Фибоначчи до 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 Ответ

1 голос
/ 31 октября 2019

вы поднимаете i перед утверждением: i-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)
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...