Я пытаюсь создать последовательность Коллатца с while l oop в R. Что я делаю не так в этом, пока l oop здесь? - PullRequest
0 голосов
/ 22 февраля 2020

Я пытаюсь создать последовательность Коллатца с l oop в R.

vector <-  NULL
n <- 10
while (n != 1) {
  if (n %% 2 == 0) {
    n <- n / 2
  } else {
    n <- (n * 3) + 1
  }
  vector <- c(vector, cbind(n))
  print(vector)
}

После запуска кода я получил:

[1] 5
[1]  5 16
[1]  5 16  8
[1]  5 16  8  4
[1]  5 16  8  4  2
[1]  5 16  8  4  2  1

Как мне сделать он такой, что показывает только последний ряд? Что пошло не так в моем коде? Спасибо за любую помощь в этом.

1 Ответ

0 голосов
/ 23 февраля 2020

У вас есть несколько способов справиться с print(vector)

  • добавить if условие перед print(vector), т. Е.
vector <-  NULL
n <- 10
while (n != 1) {
  if (n %% 2 == 0) {
    n <- n / 2
  } else {
    n <- (n * 3) + 1
  }
  vector <- c(vector, cbind(n))
  if (n==1)  print(vector)
}
  • ход это снаружи while l oop, т.е.
vector <-  NULL
n <- 10
while (n != 1) {
  if (n %% 2 == 0) {
    n <- n / 2
  } else {
    n <- (n * 3) + 1
  }
  vector <- c(vector, cbind(n))
}
print(vector)
...