Java 如何在没有for循环或递归的情况下生成幂方法?

Java 如何在没有for循环或递归的情况下生成幂方法?,java,Java,我正在考虑一种计算整数幂(仅以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; }

我正在考虑一种计算整数幂(仅以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;

    }
}
静态长功率(int-val){
长y=10l;
如果(val==1){
返回y;
}否则{
对于(int x=0;x
最简单的方法是使用
Math.pow

假设您不想这样做,您可以使用查找表。只有少数有限的结果适合于长时间的分析。类似这样的方法会奏效:

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

static long power(int val) {
    return results[val];
}

最简单的方法是使用
Math.pow

假设您不想这样做,您可以使用查找表。只有少数有限的结果适合于长时间的分析。类似这样的方法会奏效:

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

static long power(int val) {
    return results[val];
}

我不明白你为什么要这么做,但很明显,这是可行的:

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

static long power(int val) {
    return results[val];
}
(警告:丑到你想要的程度)

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

  • 当然,这只会隐藏循环

    我不明白您为什么要这样做,但显然,这是可行的:

    static final long[] results = { 1L, 10L, 100L, /* etc... */ };
    
    static long power(int val) {
        return results[val];
    }
    
    (警告:丑到你想要的程度)

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

  • 当然,这只是隐藏循环,可能有一种使用字符串的方法。类似于

    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[])

    可能有一种使用字符串的方法。类似于

    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[])

    为什么要避免循环和递归?使用内置方法超出范围:)因为您只寻找10的整数幂,数组可能是最佳选择。使用
    System.exec(…)
    运行
    dc
    命令如何?:-)由于不进行查找的最有效方法是循环,我真的很想知道这个解决方案最终会是什么样的悲剧。为什么要避免循环和递归?使用内置方法超出了范围:)因为您只寻找10的整数幂,数组可能是最好的选择。使用
    System.exec(…)
    运行
    dc
    命令怎么样?:-)由于最有效的方法是不进行查找就进行循环,我真的很想知道这个解决方案最终会是一种什么样的讽刺。我很了解内置方法,但我想在我的own@Eslam,你认为bilt in方法不使用循环吗?实际上它使用循环,我是那个不会循环或递归的人:)@Eslam,不,不是你,回答这个问题的人我很了解内置方法,但我想在我的own@Eslam,你认为bilt in方法不使用循环吗?事实上,它使用循环,而我是不使用循环或递归的人:)@Eslam,不,不是你,无论谁回答这个问题,willIt都会隐藏循环,前提是你找到了一个为你添加正确数量的零的方法:-)@jbniset
    “0000000000000000”。子字符串(0,power)
    浮现在脑海中。touché。然后所有希望都破灭了,我们需要找到一个实现
    pow
    的库。只有找到一个为您添加正确数量的零的方法,它才会隐藏循环:-)@JBNizet
    “0000000000000000”。子字符串(0,power)
    浮现在脑海中。touché。然后所有的希望都破灭了,我们需要找到一个实现
    pow
    的库。