Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:将带有警告的斐波那契序列中的偶数项求和_R - Fatal编程技术网

R:将带有警告的斐波那契序列中的偶数项求和

R:将带有警告的斐波那契序列中的偶数项求和,r,R,我被问了一个关于斐波那契数列的问题,虽然我成功地做了这个数列,但我并没有幸运地将偶数项相加,即第2、4、6。。。下面是我的代码,也是我一直坚持的问题的一部分。任何指导都会很精彩! 问题: 编写一个函数,将x和y作为输入,并返回前x个偶数Fibonacci数之和或小于y的偶数Fibonacci数之和。 这意味着用户可以指定x或y,但不能同时指定两者。 如果有人同时使用这两个数字,则必须返回警告 关于返回的消息 代码: 让你开始,因为这听起来像一个练习 我将把循环分成多个步骤,而不是用if语句在循环

我被问了一个关于斐波那契数列的问题,虽然我成功地做了这个数列,但我并没有幸运地将偶数项相加,即第2、4、6。。。下面是我的代码,也是我一直坚持的问题的一部分。任何指导都会很精彩! 问题: 编写一个函数,将x和y作为输入,并返回前x个偶数Fibonacci数之和或小于y的偶数Fibonacci数之和。 这意味着用户可以指定x或y,但不能同时指定两者。 如果有人同时使用这两个数字,则必须返回警告 关于返回的消息 代码:


让你开始,因为这听起来像一个练习

我将把循环分成多个步骤,而不是用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