Java中的指数(足够简单)
写一个循环,这样做的指数总和:2^0,2^1,2^2,并将它们相加 以下是我的节目:Java中的指数(足够简单),java,exponent,Java,Exponent,写一个循环,这样做的指数总和:2^0,2^1,2^2,并将它们相加 以下是我的节目: import java.util.Scanner; public class Exponents { public static void main(String[] args) { Scanner reader = new Scanner(System.in); System.out.println(" Enter expoenent ");
import java.util.Scanner;
public class Exponents {
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.println(" Enter expoenent ");
int n = Integer.parseInt(reader.nextLine());
int sum = 0;
int i = 0;
int result = (int)Math.pow(2, sum);
while(i <= n) {
i++;
sum = sum + i;
result += result;
}
System.out.println(result);
}
}
import java.util.Scanner;
公开课代表{
公共静态void main(字符串[]args){
扫描仪阅读器=新扫描仪(System.in);
System.out.println(“输入exponent”);
int n=Integer.parseInt(reader.nextLine());
整数和=0;
int i=0;
int result=(int)Math.pow(2,sum);
而(i为什么每次迭代都要重新评估整个术语
差不多
int term = 1;
int sum = 0;
for (int i = 0; i < n; ++i){
sum += term;
term *= 2;
}
int-term=1;
整数和=0;
对于(int i=0;i
这样会更有效率。这里,n
是术语的数量:在您的示例中,它是3。如果您想包含一个额外的术语,那么使用简单,就是尝试这个
public static void main(String[] args) {
Scanner reader = new Scanner(System.in);
System.out.println(" Enter expoenent ");
int n = Integer.parseInt(reader.nextLine());
int sum = 0;
for (int i = 0; i <= n;) {
sum += (int) Math.pow(2, i);
i++;
}
System.out.println(sum);
}
publicstaticvoidmain(字符串[]args){
扫描仪阅读器=新扫描仪(System.in);
System.out.println(“输入exponent”);
int n=Integer.parseInt(reader.nextLine());
整数和=0;
对于(inti=0;i,问题是你只计算一次幂,然后再计算另一个和,而不是问题中的那一个
您的代码应该是
int i = 0;
int result = 0;
while(i <= n) {
result += Math.pow(2, i++);
}
System.out.println(result);
inti=0;
int结果=0;
当(i尝试时,这将产生所需的输出
System.out.println("Enter exponent : ");
int n = Integer.parseInt(reader.nextLine());
int number = 2;
int i = 0;
double sum = 0;
while (i <= n) {
sum = sum + Math.pow(number, i);
i = i + 1;
}
System.out.println("The sum is: " + sum);
System.out.println(“输入指数:”);
int n=Integer.parseInt(reader.nextLine());
整数=2;
int i=0;
双和=0;
而(i我发现您的代码有一些问题:
您并不是将2的幂加到结果
,而是将结果
加到自身,即在每次迭代中将结果乘以2。因此结果将是1,2,4,8
您保留了一个sum变量,它是i
的和。我不知道它的用途是什么,但您没有使用该变量,因此在这种情况下它没有任何效果
我认为你想做的是:
int n = Integer.parseInt(reader.nextLine());
int result = 0;
for (int i = 0; i <= n;) {
result += (int) Math.pow(2, sum); // add 2^i to the result
i++; // increment i by one.
}
System.out.println(sum);
int n=Integer.parseInt(reader.nextLine());
int结果=0;
对于(int i=0;i您必须使用pow()
对于每个迭代和i++
应该是循环的最后一行你打算让*=2在这里做什么?我知道它做什么,但为什么?因为每个连续项的大小是前一项的两倍。顺便说一句,你可以使用位左移1,这对于Java正整数类型相当于乘以2。它只是可能更快;请尝试并分析性能。