C:x到幂n使用重复平方而没有递归函数

这是我的代码,它计算2提升到16的功率

#include #include int main() { int i; long int x=2; int n=16; int k=log(n)/log(2); for(i=1;i<=k;i++) { x=x*x; } printf("%d",x); printf("\n%d",k); } 

我想计算这个,当x的幂,即n不是2的幂时,例如。 比如n = 19,n = 43等

我怀疑你正在通过平方来寻找取幂,这是这样的:

 unsigned int intpow(unsigned int base, unsigned int exponent) { unsigned int result = 1; while (exponent > 0) { while ((exponent & 1) == 0) { exponent /= 2; base *= base; } exponent--; result *= base; } return result; } 

为了使代码适用于其他function进行这些更改,请乘以获得额外的功率。

 int main() { int i; long int x=2; int n=7; int k=log(n)/log(2); int y,z; y=n-pow(2,k); z=1; for(i=0;i