为什么我自定义实现的power幂函数无法正常运行?
问题排查说明
你提供的power函数存在逻辑错误,无法正确计算幂值,具体问题和修复方案如下:
错误原因
- 循环逻辑错误:你在循环中直接对
a执行平方操作a *= a,不是累计乘以原始底数,导致最终结果远大于预期值。例如计算2^3时,你的代码会依次计算2*2=4、4*4=16,返回结果为16,和正确值8完全不符。 - 未覆盖边界场景:没有处理
b=0(幂值为0时结果应为1)、b<0(负次幂需要取底数倒数)的情况。
修复代码
基础暴力实现(时间复杂度O(b))
double power(double a, long long b){ // 0次幂直接返回1 if (b == 0) return 1.0; // 处理负次幂 if (b < 0) { a = 1.0 / a; b = -b; } double result = 1.0; while(b > 0){ result *= a; b--; } return result; }
快速幂优化实现(时间复杂度O(logb),适合b值很大的场景)
double power(double a, long long b){ if (b == 0) return 1.0; if (b < 0) { a = 1.0 / a; b = -b; } double result = 1.0; while(b > 0){ // 奇数位将当前底数乘入结果 if (b % 2 == 1) { result *= a; } a *= a; b /= 2; } return result; }
内容的提问来源于stack exchange,提问作者user17526692
相关产品推荐
相关产品推荐

