我要计算斐波那契数列的商,例如:
我创建了一个函数来计算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])
}
这不能正常工作,它返回的数字非常小,并且我在上表中没有得到相同的结果。有人可以向我解释我做错了什么以及如何解决吗?
非常感谢您
答案 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