【问题标题】:How to find an integer's position in the fibonacci sequence如何在斐波那契数列中找到整数的位置
【发布时间】:2014-05-29 05:21:40
【问题描述】:

我正在尝试使用斐波那契的序列作为游戏体验点到关卡转换的限制(我也希望对此决定提出批评),如下所示:

如果玩家有 49.450 点,那么他处于 25 级,因为最接近的较小斐波那契数是 46.368。

但是,我很难弄清楚如何做到这一点。除了创建一个以levels为key、limits为value的map,还有什么更聪明的方法吗?

【问题讨论】:

  • 如果关卡数量有限,那么我认为创建初始地图是最好的选择。
  • 是的,这也有助于稍后调整值,我也愿意这样做。对斐波那契的想法有何评论?有没有更好的办法来创建尺寸增加的关卡限制?
  • 使用斐波那契来做这个非常酷。您需要考虑随着游戏的进展,您希望移动到下一个级别的难度增加多少。也许在一张纸上画一条曲线,然后看看哪个基本的数学函数可以给你这条曲线。
  • 对于大的n,第n个斐波那契数约为c*phi^n,其中phi是黄金比例。您可以调整常量以获得您喜欢的级别进展。

标签: java sorting math ranking fibonacci


【解决方案1】:

斐波那契指数呈指数增长。基数是 phi(黄金比例),所以它不如 2^n 快,但仍然相当快。只有最小的 94 个左右的斐波那契数可以用无符号 64 位整数表示,因此查找表可能是您的最佳选择。

但是,如果您真的想计算它,您可以反转封闭形式的解决方案以获得类似的结果:

int fibIndex(long n) {
    return Math.round(Math.log(n * Math.sqrt(5))/Math.log(PHI));
}

这可能是一个,当然不能区分序列早期的双1。

【讨论】:

    猜你喜欢
    • 2014-01-10
    • 1970-01-01
    • 2017-04-02
    • 2015-06-05
    • 1970-01-01
    • 2021-05-12
    • 1970-01-01
    相关资源
    最近更新 更多