Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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_Performance_Vectorization - Fatal编程技术网

R 如何检查向量是否为斐波那契数列

R 如何检查向量是否为斐波那契数列,r,performance,vectorization,R,Performance,Vectorization,背景:斐波那契数是一系列数字,其中每个数字(斐波那契数)是前面两个数字的总和。一个简单的例子是:1、1、2、3、5、8等等 我试图理解如何检测向量是否包含斐波那契数。是否可以通过矢量化操作(我的意思是不使用循环)来实现这一点?在第一个元素之后,斐波那契序列中元素之间的差异应该是序列。因此,一个简单的解决方案是 F1 = c(2,5,7,12,19,31) F2 = c(2,5,7,12,18,31) all(diff(F1)[-1] == head(F1, -2)) [1] TRUE all

背景:斐波那契数是一系列数字,其中每个数字(斐波那契数)是前面两个数字的总和。一个简单的例子是:1、1、2、3、5、8等等


我试图理解如何检测向量是否包含斐波那契数。是否可以通过矢量化操作(我的意思是不使用循环)来实现这一点?

在第一个元素之后,斐波那契序列中元素之间的差异应该是序列。因此,一个简单的解决方案是

F1 = c(2,5,7,12,19,31)
F2 = c(2,5,7,12,18,31)

all(diff(F1)[-1]  == head(F1, -2))
[1] TRUE
all(diff(F2)[-1]  == head(F2, -2))
[1] FALSE

现在,这只是重新定义的结果。如果a(i)=a(i-1)+a(i-2),那么a(i-2)=a(i)-a(i-1)应该说“注意”,而不是“现在”。这没什么大不了的,但我觉得更正一下听起来没那么棘手。