1

我正在考虑一种计算整数的幂(仅以 10 为底)的方法,该整数将作为参数传递但不使用 for 循环或递归:

这是使用 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.

假设您不想这样做,您可以使用查找表。只有少数有限数量的结果适合长。像这样的东西会起作用:

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

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

我不明白您为什么要这样做,但显然,这会起作用:

(警告:随心所欲)

  1. 将数字转换为字符串(使用 base-b 表示,b=10)
  2. 附加零
  3. 将字符串转换为数字并返回结果

当然,这只会隐藏循环

于 2012-07-22T12:36:43.800 回答
0

可能有一种使用字符串的方法。就像是...

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

但我认为替换也会在里面使用一个循环。也许 Array.fill 没有(因此您可以尝试使用 char[])

于 2012-07-22T12:40:51.557 回答