双精度浮点数类型的整数次方运算
发布时间
阅读量:
阅读量
已知一个double类型的浮点数值base与int类型的整数exponent,要求计算base的exponent次方。题目条件确保base与exponent不会同时为零。
解:该问题具有一定的特殊性,涉及到二分求幂算法以及对多种情况的判断处理。
首先了解二分求幂的基本原理(摘自:https://www.cnblogs.com/faterazer/p/10978074.html)):
对于任意指数𝑏,可以将其转换为二进制表示形式。在该二进制字符串中,所有值为1的位置所对应的数值,正是应用二分求幂法时所需的分解结果。以这一思路重新审视a31的例子,指数31的二进制形式为11111,其中从低位到高位每一个为1的位置所对应的数值分别为:20 = 1, 2^1 = 2, 2^2 = 4, ..., 2^4 = 16。值得注意的是a31可表示为a16 * ... * a^2 * a。
因此,在将指数转换为二进制形式后,只需在每一位为1的位置进行相应的乘法运算即可。针对a^b的计算过程可采用如下简化算法:
int fun(int a, int b) {
int result = 1;
while (b!=0) {
if (b % 2 == 1)
result *= a;
全部评论 (0)
还没有任何评论哟~
