如何计算R

时间:2019-05-04 15:10:20

标签: r for-loop math fibonacci

我要计算斐波那契数列的商,例如:

enter image description here

我创建了一个函数来计算Fbonacci级数,可以,但是在计算商数时遇到了麻烦。这是我的功能:

fibonacci <- function(n){
  numbers <- numeric(n)
  numbers[1] <- 1
  numbers[2] <- 1
  for (i in 3:n)  
    numbers[i] <- numbers[i-1]+numbers[i-2]
  return(numbers)
}

这将计算斐波那契数列。这就是我尝试计算的商:

fibonacci_q <- function(n){
  numbers <- numeric(n)
  numbers[1] <- 1
  numbers[2] <- 1
  for (i in 3:n)  
    numbers[i] <- numbers[i-1]+numbers[i-2]
  return(numbers/numbers[i-1])
}

这不能正常工作,它返回的数字非常小,并且我在上表中没有得到相同的结果。有人可以向我解释我做错了什么以及如何解决吗?

非常感谢您

1 个答案:

答案 0 :(得分:1)

当前,您正在将所有数字除以第n-1个数字。您的功能正在为您提供价值

fibonacci_q(10)
#[1] 0.0294 0.0294 0.0588 0.0882 0.1471 0.2353 0.3824 0.6176 1.0000 1.6176

等于

fibonacci(10)/34
#[1] 0.0294 0.0294 0.0588 0.0882 0.1471 0.2353 0.3824 0.6176 1.0000 1.6176

为什么34?因为它是fibonacci(10)序列中的第9个数字(第n-1个数字)。

您需要将功能更改为

fibonacci_q <- function(n){
   numbers <- numeric(n)
   numbers[1] <- 1
   numbers[2] <- 1
   for (i in 3:n)  
     numbers[i] <- numbers[i-1]+numbers[i-2]
  return(c(NA, numbers[-1]/numbers[-length(numbers)]))
}

fibonacci_q(10)
# [1]   NA 1.00 2.00 1.50 1.67 1.60 1.62 1.62 1.62 1.62

现在等于

c(NA, fibonacci(10)[-1]/fibonacci(10)[-10])
#[1]   NA 1.00 2.00 1.50 1.67 1.60 1.62 1.62 1.62 1.62