для цикла и функции в R для - PullRequest
0 голосов
/ 14 марта 2019

Я совершенно новичок в R и мало что знаю. Я был бы очень признателен, если бы кто-нибудь помог мне решить эту проблему. Я уже второй день пытаюсь использовать разные коды для решения этой проблемы, но не могу получить никакого ответа. Я знаю, что есть некоторые другие вопросы, связанные с этим. Я проверил всех и каждого, но до сих пор не могу понять. Пожалуйста, не отмечайте его как дубликат и предоставьте ответ. Я был бы очень благодарен.

Так что в основном я должен создать функцию ans (n), которая возвращает вектор с n первыми числами последовательности Фибоначчи в качестве элементов.

Я знаю фибоначчи. Итак, для этого сначала я создал Vactor как:

x<-c(1, 1)

Тогда я использовал эту команду:

 ans<-function(n){
 for(i in x){
 return(x[n-1]+x[n-2])
 }}

Где я иду не так?

Ответы [ 2 ]

0 голосов
/ 17 марта 2019

Вместо цикла for определение последовательности Фиббоначи особенно хорошо подходит для реализации рекурсивной функции.

# Calculate Fibbonacci term x
fib.x <- function(x) {
    if (x <= 1) return(x) else  return(fib.x(x - 1) + fib.x(x - 2))
}

# Return the Fibbonacci sequence of length n
fib <- function(n) sapply(1:n, fib.x)

fib(9)
#[1]  1  1  2  3  5  8 13 21 34

Вы можете сделать это еще быстрее, используя Rcpp.

0 голосов
/ 14 марта 2019

Вам необходимо сохранить значения в вашем векторе перед его возвратом.

x = c(1, 1)

ans <- function(n) {
    for(i in 3:n) {
        x = c(x, x[i-1]+x[i-2])
    }
    return(x)
}

Вывод:

ans(9)
[1]  1  1  2  3  5  8 13 21 34
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...