1

forループや再帰を使用せずに、引数として渡される整数の累乗(基数10のみ)を計算する方法を考えています:

forr ループを使用した最も単純な形式のメソッドを次に示します。

 static long power(int val) {
    long y = 10l;

    if (val == 1) {
        return y;
    } else {
        for (int x = 0; x < val - 1; x++) {
            y *= 10;

        }
        return y;

    }
}
4

3 に答える 3

5

最も簡単な方法は、 を使用することMath.powです。

それをしたくないと仮定すると、ルックアップ テーブルを使用できます。long に収まる結果の数は限られています。次のようなものが機能します。

static final long[] results = { 1L, 10L, 100L, /* etc... */ };

static long power(int val) {
    return results[val];
}
于 2012-07-22T12:25:38.980 に答える
0

Strings を使用する方法があるかもしれません。何かのようなもの...

String zeros = new String(new char[val]).replace('\0', '0');
String init = "1";
String out = init.concat(zeros);
return Long.valueof(out);

しかし、replace は内部でループも使用すると思います。たぶん Array.fill はそうではありません (したがって、char[] で試すことができます)

于 2012-07-22T12:40:51.557 に答える
0

なぜそれをしたいのかわかりませんが、明らかに、これはうまくいきます:

(警告:あなたが望むほど醜い)

  1. 数値を文字列に変換します (base-b 表現、b=10 を使用)
  2. ゼロを追加
  3. 文字列を数値に変換して結果を返す

もちろん、これはループを隠すだけです

于 2012-07-22T12:36:43.800 に答える