Создать последовательность в R - PullRequest
0 голосов
/ 13 мая 2018

Привет, мне было интересно, кто-нибудь знает, как реализовать эту последовательность в R?

Consider a sequence with following requirement.
a1=1
an=an-1+3 (If n is a even number)
an=2×an-1-5 (If n is a odd number)
   e.g. 1,4,3,6,7,10,15,...

   a30=? 

Ответы [ 2 ]

0 голосов
/ 13 мая 2018

Если вы хотите сделать это рекурсивно, просто напишите уравнения в вашей функции следующим образом:

sequence <- function(n) {
  if (n == 1) return(1)
  else if (n > 1) {
    if (n %% 2 == 1) {
      return(2 * sequence(n - 1) - 5)
    }else{
     return(sequence(n - 1) + 3)
    }
  }else{
    stop("n must be stricly positive")
  }
}
sequence(30)
# returns 32770
0 голосов
/ 13 мая 2018

Попробуйте следующее.
Он вернет всю последовательность, а не только последний элемент.

seq_chih_peng <- function(n){
    a <- integer(n)
    a[1] <- 1
    for(i in seq_along(a)[-1]){
        if(i %% 2 == 0){
            a[i] <- a[i - 1] + 3
        }else{
            a[i] <- 2*a[i - 1] - 5
        }
    }
    a
}

seq_chih_peng(30)

Обратите внимание, что я не включаю код для проверки ошибок ввода, таких как пропуск n = 0 или отрицательное число.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...