从经验到级别反转自定义函数PHP

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (38)

我有一个函数,我输入一个级别,它返回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
提问于
用户回答回答于

一个低效但简单的解决方案是在循环中连续调用体验函数,每次增加级别,直到达到返回高于您正在查找的体验值的级别,然后在此之前返回级别:

function level($experience) {
    $returned = 0;
    $level = 0;

    while ($returned <= $experience) {
        $level++;
        $returned = experience($level);
    }

    return $level - 1;
}

演示:http//sandbox.onlinephpfunctions.com/code/820d659feb28a00dd87a21d01bd2414cbc66d300

扫码关注云+社区

领取腾讯云代金券