我的问题与斐波那契数列有关(但为简单起见,您可以将其应用于平方/素数等)

long f1 = 0;
long f2 = 1;
long fibonacci = 0;
long[] fibonaccinumbers = new long[52];
fibonaccinumbers[0]=0;
fibonaccinumbers[1]=1;
for(int count = 2; count<=51; count++)
{
    fibonacci = f2+f1;
    fibonaccinumbers[count] = fibonacci;
    f1 = f2;
    f2 = fibonacci;
}


上面的代码生成斐波纳契数0-51的数组。

现在我要输入的是数字,我们以30为例。然后找到并显示序列前后的数字,分别是21和34。

使我不寒而栗的是,进入数组并在给定数字的上方和下方搜索以找到匹配项。我该怎么办?

最佳答案

由于斐波那契数列是一个排序的数组(具有升序),因此您可以使用int index = Arrays.binarySearch(fibonaccinumbers,30);来获取诸如fibonaccinumbers[index-1] < 30 < fibonaccinumbers[index]的索引。

因此,fibonaccinumbers[index-1]将包含21,而fibonaccinumbers[index]将包含34。

请注意,如果数组中的所有数字均小于要搜索的数字,则Arrays.binarySearch将返回fibonaccinumbers.length

关于java - 在数组中查找周围的数字(java),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34991463/

10-10 18:06