Java 如何在没有for循环或递归的情况下生成幂方法?
我正在考虑一种计算整数幂(仅以10为基数)的方法,该方法将作为参数传递,但不使用for循环或递归: 以下是使用forr循环的最简单形式的方法: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; }
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
的库。