Java中的指数(足够简单)

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 ");

写一个循环,这样做的指数总和: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 ");
        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。它只是可能更快;请尝试并分析性能。