1

私はこのコードを持っています:

 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;方程式によってレベルを取得するための代替手段についてです。

4

1 に答える 1

2

値に対してバイナリ検索を実行して、 O(N) の代わりに O(logN) アルゴリズムを取得することもできます Nはレベルの数であり、1000 を超えるとは思わないため、コードを複雑にする必要はありません。 . 同じことを行うことができますが、より短いコードを使用できます。

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

PS を削除したことに注意してくださいpow。整数のみを扱い続けるためにそれを避けてください。

于 2013-03-22T20:15:08.830 に答える