通过经验获得水平

时间:2013-03-22 20:09:46

标签: php optimization levels exp

我有这段代码:

 function getLevels($cEXP) {  // $cEXP is current player experience

    $i = 1;
    while(!$n) {
    $NextLevelXP = pow($i,3) + 2 * $i;
        if($NextLevelXP > $cEXP) {
            $AllLevels = $i;
            break;
        }
    $i++;
    }
}

我需要知道的是关于优化可能性,或者通过$NextLevelXP = pow($CurrentLevel,3) + 2 * $CurrentLevel;等式获得水平数量的替代方案。

1 个答案:

答案 0 :(得分:2)

您甚至可以对值进行二元搜索以获得 O(logN)算法,而不是 O(N),但是 N 是我认为不会超过1000的级别数,不需要使代码复杂化。您可以使用更多短代码执行相同操作:

function getLevels($cEXP) {
    for($i = 1; ($i * $i + 2) * $i <= $cEXP; $i++);
    return $i - 1;
}

P.S。请注意,我摆脱了pow,尽量避免它只处理整数。