我是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不正确),但我在过去的一个半小时内没有找到任何东西帮助我纠正它。 因此,对问题原因的任何见解都将非常受欢迎。
提前谢谢。
答案 0 :(得分:16)
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])