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
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