我们编写了
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();
}
}
}
答案 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^1
,base^2
,base^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