提升到数字的力量(迭代方法)

时间:2017-04-30 11:46:54

标签: java

  

我们编写了power的递归版本,它采用了双x和整数n并返回x^n。现在编写一个迭代方法来执行相同的计算。

如何计算数字的功效?我的代码一遍又一遍地打印结果,我不知道为什么。

public class seventhree {
    public static void main(String[] args){
        Scanner in= new Scanner(System.in);
        int x;
        int n;

        System.out.print("Type in a base:  ");
        x= in.nextInt();

        System.out.print("Type in an exponent: ");
        n= in.nextInt();

        while(n>=2){
            System.out.println((x)*(n));
            System.out.println();
        }
    }
}

2 个答案:

答案 0 :(得分:1)

因为Django没有改变,你必须递减n直到它<&lt;然后2,并且要使用正确的结果:

n

结果示例

int rs = 1;
while (n > 0) {
    rs *= x;
    n--;
}
System.out.println(rs);

答案 1 :(得分:1)

您可以使用Bit Manipulation技术实现此目标,这将为您提供O(log(exponent))复杂度的输出。

想法是将指数除以power 2的整数之和。然后我们可以使用base^1base^2base^4得到的数字....然后最后我们可以将所有设置为{{1 exponent将给出最终答案。

binary representation

在你的代码中,你不会减少long ans=1; while(n > 0) { if((n&1)!=0) //Checking if the bit is set or not ans*=x; x*=x; //squaring the base n=n>>1; //shifting exponent to check next bit } System.out.println(ans); 所以它会以无限循环结束。因此,您可以对代码进行一些更改。

n