确定两个斐波那契数的邻接关系

use*_*602 2 arrays algorithm numbers sequence

我有很多斐波那契数,如果我想确定两个斐波那契数是否相邻,一个基本方法如下:

  1. 获取第一个斐波纳契数的索引,比如说i1
  2. 得到第二个斐波纳契数的索引,比如说i2
  3. 获取i1-i2的绝对值,即| i1-i2 | 如果值为1,则返回true.否则返回false.

在第一步和第二步中,可能需要通过使用访问数组来进行许多比较以获得正确的索引.

在第三步中,它需要一次减法和一次绝对操作.

我想知道是否存在另一种方法来快速确定斐波纳契数的邻接性.

我不关心这个问题是否可以通过数学方法或任何黑客技术解决.

如果有人有任何想法,请告诉我.非常感谢!

pse*_*ler 5

无需找到两个数字的索引.

鉴于这两个数字属于Fibonacci系列,如果它们的差异大于min.其中有两个不相邻的数字.其他明智的他们是.

因为Fibonacci系列遵循以下规则:

F(n) = F(n-1) + F(n-2) where F(n)>F(n-1)>F(n-2). 
So F(n) - F(n-1) = F(n-2) ,
=>  Diff(n,n-1) < F(n-1) < F(n-k) for k >= 1
Run Code Online (Sandbox Code Playgroud)

两个相邻的斐波那契数之间的差异总是小于其中的最小数.

注意:仅当数字属于Fibonacci系列时才会保留.