如何检查一个向量是否是斐波那契数列

How to check whether a vector is a Fibonacci sequence of numbers

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

我想了解如何检测向量是否包含斐波那契数列。是否可以通过向量化操作(我的意思是不使用循环)来完成此操作?

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

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