9

我是 R 的新手,所以在 C 和 Python 中似乎可以正常工作的东西在 R 中出人意料地崩溃了。我正在尝试计算前 1000 个斐波那契数的乘积。这是完整的代码:

#PRRODUCT OF FIBONACCI NUMBERS
Fibonacci<-rep(0, 1000)
Fibonacci[0]<-1
Fibonacci[1]<-1
Product<-1

for (i in 2:1000)
{
    Fibonacci[i]<-(Fibonacci[i-1])+(Fibonacci[i-2])
    Product<-Fibonacci[i]*Product
}

Fibonacci[1000]
Product

这将返回以下错误:

Error in Fibonacci[i] <- (Fibonacci[X - 1]) + (Fibonacci[X - 2]) : 
  replacement has length zero

我倾向于认为我误解了使用数组的不同元素进行操作(也许向量描述中的 i-2 不正确),但在过去的一个半小时内我没有发现任何可以帮助我纠正的东西它。因此,任何对问题原因的见解将不胜感激。

先感谢您。

4

1 回答 1

20

R 中的数组是从 1 开始的。

Fibonacci[1]<-1
Fibonacci[2]<-1
Product<-1
for (i in 3:1000)
{

(其余如你的问题)

问题是Fibonacci[0]这是一个 0 长度的数字。当 时i = 2,此表达式具有 的右手边numeric(0)

Fibonacci[i]<-(Fibonacci[i-1])+(Fibonacci[i-2])
于 2013-07-15T22:46:07.897 回答