Привет, мне было интересно, кто-нибудь знает, как реализовать эту последовательность в 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=?
Если вы хотите сделать это рекурсивно, просто напишите уравнения в вашей функции следующим образом:
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
Попробуйте следующее. Он вернет всю последовательность, а не только последний элемент.
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 или отрицательное число.
n = 0