Как использовать для l oop, чтобы найти сумму ряда геометрических c - PullRequest
1 голос
/ 06 августа 2020

Я новичок в R и попытался найти команду для нахождения суммы ряда геометрических c. Я попытался использовать for l oop и получил следующее:

x=0
for(i in 1:1000){
x = x + 3 * 0.5^(i-1)
return(x)
}

Но он возвращает x = 3. Я не могу понять, в чем проблема? Также, просматривая inte rnet, я наткнулся на этот

geomsum = function(a, r, n) {
x = 0

for(i in 1:n) x = x + a * r^(i-1)
return(x)
}

, и он работает, хотя он очень похож на мой код. Если бы кто-нибудь мог сказать мне, что мне не хватает?

Ответы [ 2 ]

1 голос
/ 06 августа 2020

Использование return(x) в этом случае странно: оно выходит из l oop на первой итерации. Попробуйте просто

x=0
for(i in 1:1000) {
   x = x + 3 * 0.5^(i-1)
}

Затем print(x), чтобы увидеть значение x.

В случае geomsum, который вы цитируете выше, (1) это фактическая функция, поэтому return(...) имеет смысл; (2) тело l oop представляет собой одиночный оператор (x = x + a * r^(i-1)), поэтому return(...) идет после завершения l oop. Проблема с кодом, который выглядит следующим образом:

x=0
for(i in 1:1000) {
   x = x + 3 * 0.5^(i-1)
}
return(x)

, заключается в том, что он выдает ошибку («нет функции для возврата, переход на верхний уровень»). Но вам в любом случае не нужен return(x), поскольку вы не работаете внутри функции.

0 голосов
/ 06 августа 2020

Вы можете использовать это:

i=1:1000
sum(3 * 0.5^(i-1))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...