我试图使用斐波纳契的序列作为游戏体验转换水平转换的限制(我也想批评这个决定),如下所示:
如果一名球员有49.450分,那他就是25级,因为最接近的较小的斐波纳契数是46.368。
但是,我很难弄清楚如何做到这一点。除了创建一个水平作为键和限制值的地图之外,还有更聪明的方法吗?答案 0 :(得分:3)
Fibonacci以指数方式增长。基数是phi(黄金比例),所以它不如2 ^ n快,但它仍然很快。只有最小的94个Fibonacci数字可以用无符号的64位整数表示,所以查找表可能是你最好的选择。
但是,如果你确实想要计算它,你可以将封闭的表格解决方案反转为:
int fibIndex(long n) {
return Math.round(Math.log(n * Math.sqrt(5))/Math.log(PHI));
}
这可能是一个,当然不能在序列的早期区分双1。