链接:
来源:牛客网
[编程题]数值的整数次方.
热度指数:614061时间限制:C/C++ 1秒,其他语言2秒空间限制:C/C++ 32M,其他语言64M
给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。
保证base和exponent不同时为0
#include< math.h >C 库函数 double pow(double x, double y) 返回 x 的 y 次幂,即 xy。
完整的代码
class Solution {
public:double Power(double base, int exponent) {return pow(base, exponent);}
};
结果
直接进行计算,如果exponent为正数直接计算,如果为负数1 / 结果
完整代码如下
class Solution {
public:double Power(double base, int exponent) {// 前置结果设为1.0,即当exponent=0 的时候,就是这个结果double result = 1.0;// 获取指数的绝对值int e = exponent > 0 ? exponent : -exponent;// 根据指数大小,循环累乘for(int i = 1 ; i <= e; i ++){result *= base;}// 根据指数正负,返回结果return exponent > 0 ? result : 1 / result;}
};
结果图
1、exponent是正数。那么递归式如下:
如果exponent是偶数,Power(base, exponent) = Power(base, exponent / 2) * Power(base, exponent / 2)
如果exponent是奇数,Power(base, exponent) = base * Power(base, exponent / 2) * Power(base, exponent / 2)
2、负指数exponent的情况,取其绝对值先计算。将最后结果取倒数即可。
完整代码
class Solution {
public:double Power(double base, int exponent) {bool x = false;if(exponent < 0){exponent = -exponent;x = true;}double result = GetPower(base, exponent);return x ? 1/result : result;}double GetPower(double base, int exponent){if(exponent == 0){return 1;}if(exponent == 1){return base;}double ans = GetPower(base, exponent >>1);ans *= ans;if(exponent & 1 == 1){ans *= base;}return ans;}
};
运行结果
本文发布于:2024-01-27 20:10:16,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/17063574182378.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |