R 函数查找斐波那契数列

R function to find Fibonacci numbers

R 的新手,如有任何错误,敬请谅解。我正在创建一个 R 函数来查找从 1 开始的 20 个斐波那契数。我创建了这个函数,但是该函数输出的斐波那契数是这样的:

# Output
1  1  2  3  5  8  13   21   34   55   89  144  233  377  610  987 1597 2584 4181 6765

我想要这个:

1  2  3  5  8  13   21   34   55   89  144  233  377  610  987 1597 2584 4181 6765 10946

让我烦恼的是我不想在开始时使用 2 'ones'。开始时只需要一个“1”。另外,函数调用有问题。这是我的代码:

Ms <- function(moving_sum) {
  Fib <- numeric(20)
  Fib[1]  <- Fib[2] <- 1
  for (i in 3:20) Fib[i] <- Fib[i - 2] + Fib[i - 1] 
  return(Fib)
}

Ms(0)

谢谢。

---更新---

如何求偶数的总数?那些偶数的总和?

合并以下更改

Ms <- function(moving_sum) {
  Fib <- numeric(moving_sum + 1) # Use the parameter moving_sum
  Fib[1]  <- Fib[2] <- 1
  for (i in seq(3, moving_sum + 1)) Fib[i] <- Fib[i - 2] + Fib[i - 1] 
  return(Fib[-1]) # Remove the first number
}

Ms(20)
 [1]     1     2     3     5     8    13    21    34    55    89   144   233   377
[14]   610   987  1597  2584  4181  6765 10946

试试下面的代码

Ms <- function() {
  Fib <- numeric(20)
  Fib[1:2] <- 1:2
  for (i in 3:20) Fib[i] <- Fib[i - 2] + Fib[i - 1]
  evenFibs <- Fib[Fib %% 2 == 0]
  list(
    Fibs = Fib,
    nrOfFibs = length(evenFibs),
    sumEvenFibs = sum(evenFibs)
  )
}

你会得到

> Ms()
$Fibs
 [1]     1     2     3     5     8    13    21    34    55    89   144   233
[13]   377   610   987  1597  2584  4181  6765 10946

$nrOfFibs
[1] 7

$sumEvenFibs
[1] 14328