【问题标题】:Fibonacci Sequence ,binary search斐波那契数列,二分查找
【发布时间】:2013-04-17 22:00:07
【问题描述】:

我正在尝试解决以下问题:

F 是整数的无限序列,对于任何整数 i 都满足斐波那契条件 F(i + 2) = F(i + 1) + F(i)。编写一个程序,根据给定的 F(i) 和 F(j) 值计算 F(n) 的值。

输入: 输入包含按以下顺序排列的五个整数:i、F(i)、j、F(j)、n。 -1000 ≤ i, j, n ≤ 1000, i ≠ j, −2·10^9 ≤ F(k) ≤ 2·10^9 (k = min(i, j, n), …, max(i, j, n))。

输出: 输出由一个整数组成,即 F(n) 的值。

我试图通过找到 F(min(i,j)+1) 然后使用这两个邻居找到 F(n) 来解决这个问题。有人告诉我这可以通过在区间 (-2*10^9,2*10^9) 上实现二进制搜索来完成,但我不明白如何在这里使用二进制搜索。可以给我一个提示或解释算法简略。

【问题讨论】:

    标签: c++ search binary numbers fibonacci


    【解决方案1】:

    我能想到的一种方法是这样的:假设 i

    复杂性 - 每次迭代可能需要 2000 步(最坏情况),最坏的情况是 log(4*10^9) 次迭代,大约为 32,所以这似乎是合理的。

    【讨论】:

    • 你如何决定分割后在什么间隔内继续搜索?
    • 你试试吧。您计算从猜测的F(i + 1)到F(n)的所有值,如果太小则需要选择较大的区间,如果太大则选择较低的区间。
    猜你喜欢
    • 2015-06-05
    • 1970-01-01
    • 2013-08-03
    • 2014-05-19
    • 2015-08-30
    • 2013-03-14
    • 2013-02-24
    相关资源
    最近更新 更多