我有一个函数,我输入一个级别,它返回XP:
这是从runescape 1-99公式中获得的:
function experience($L) {
$a=0;
for($x=1; $x<$L; $x++) {
$a += floor($x+300*pow(2, ($x/7)));
}
return floor($a/4);
}
这意味着:
level 54 would return 150872 XP.
但是,我如何反其道而行之,输入150872并使其返回54呢?而且,当xp可能是150873,但它仍然是54级返回时,该怎么做呢?
我该如何批准呢?
想要:
experience(152439) -> 54
发布于 2018-07-25 08:02:38
一种低效但简单的解决方案是在循环中连续调用experience函数,每次增加级别,直到您达到的级别返回的经验值高于您正在寻找的值,然后返回之前的级别:
function level($experience) {
$returned = 0;
$level = 0;
while ($returned <= $experience) {
$level++;
$returned = experience($level);
}
return $level - 1;
}
演示:http://sandbox.onlinephpfunctions.com/code/820d659feb28a00dd87a21d01bd2414cbc66d300
https://stackoverflow.com/questions/51509048
复制相似问题