0
Я хотел бы написать рекурсивную функцию в R, которые могли бы сделать следующее:Рекурсивные функции внутри, если еще и цикл
A_x(0) = 0
A_x(1) = q[4,1]+q[4,2] * A_x(0) = 1
A_x(2) = q[3,1]+q[3,2] * A_x(1) = 5
A_x(3) = q[2,1]+q[2,2] * A_x(2) = 23
A_x(4) = q[1,1]+q[1,2] * A_x(3) = 119
Я написал следующий код:
n<-5
q<-matrix(c(4,5,3,4, 2, 3, 1,2,0,1), nrow=5, ncol=2, byrow=TRUE)
A_x <- function(x) {
for(i in n:0) {
if (x == 0) return (q[i,1])
else
return (q[i-1,1]+q[i-1,2]*A_x(x-1))
}
}
Видимо это не ясный из моего кода, что я хотел бы сделать одну строку выше каждый раз, когда я делаю цикл for. Вместо этого он выглядит так, как функция всегда принимает значения из ячеек q [4,1] и q [4,2].
Любая помощь будет высоко ценится, Vesna
не могли бы вы сделать 'cumsum (Rev (д [, 1])) '? – mtoto
Ваш for-loop бесполезен, потому что в первом повороте он выполнит 'return()' (оставив функцию). – jogo
@mtoto Извините, я дал слишком мало информации о своей проблеме. Я обновил его выше, и, к сожалению, cumsum (rev (q [, 1])) не помогает, когда в расчете больше столбцов. –