R:将带有警告的斐波那契序列中的偶数项求和
我被问了一个关于斐波那契数列的问题,虽然我成功地做了这个数列,但我并没有幸运地将偶数项相加,即第2、4、6。。。下面是我的代码,也是我一直坚持的问题的一部分。任何指导都会很精彩! 问题: 编写一个函数,将x和y作为输入,并返回前x个偶数Fibonacci数之和或小于y的偶数Fibonacci数之和。 这意味着用户可以指定x或y,但不能同时指定两者。 如果有人同时使用这两个数字,则必须返回警告 关于返回的消息 代码:R:将带有警告的斐波那契序列中的偶数项求和,r,R,我被问了一个关于斐波那契数列的问题,虽然我成功地做了这个数列,但我并没有幸运地将偶数项相加,即第2、4、6。。。下面是我的代码,也是我一直坚持的问题的一部分。任何指导都会很精彩! 问题: 编写一个函数,将x和y作为输入,并返回前x个偶数Fibonacci数之和或小于y的偶数Fibonacci数之和。 这意味着用户可以指定x或y,但不能同时指定两者。 如果有人同时使用这两个数字,则必须返回警告 关于返回的消息 代码: 让你开始,因为这听起来像一个练习 我将把循环分成多个步骤,而不是用if语句在循环
让你开始,因为这听起来像一个练习 我将把循环分成多个步骤,而不是用if语句在循环中求和。由于序列代码已经在工作,您可以只返回用户要求的内容。缺少的函数可能会对您有所帮助
f <- function(x, y) {
if (missing(y)) {
warning('you must give y')
y <- 10
}
fibvals <- numeric(y)
fibvals[1] <- 1
fibvals[2] <- 1
for (i in 3:y) {
fibvals[i] <- fibvals[i-1]+fibvals[i-2]
}
evens <- fibvals %% 2 == 0
odds <- fibvals %% 2 != 0
if (missing(x)) {
return(sum(fibvals[evens]))
} else return(fibvals)
}
f(y = 20)
# [1] 3382
f(10)
# [1] 1 1 2 3 5 8 13 21 34 55
# Warning message:
# In f(10) : you must give y
请给我们输入和期望的输出。为了效率和避免覆盖值,您应该在循环外执行此操作。循环结束后只需执行sumfibvals[cF,T]
f <- function(x, y) {
if (missing(y)) {
warning('you must give y')
y <- 10
}
fibvals <- numeric(y)
fibvals[1] <- 1
fibvals[2] <- 1
for (i in 3:y) {
fibvals[i] <- fibvals[i-1]+fibvals[i-2]
}
evens <- fibvals %% 2 == 0
odds <- fibvals %% 2 != 0
if (missing(x)) {
return(sum(fibvals[evens]))
} else return(fibvals)
}
f(y = 20)
# [1] 3382
f(10)
# [1] 1 1 2 3 5 8 13 21 34 55
# Warning message:
# In f(10) : you must give y