人生得意须尽欢,莫使金樽空对月。数值的整数次方

阅读: 评论:0

人生得意须尽欢,莫使金樽空对月。数值的整数次方

人生得意须尽欢,莫使金樽空对月。数值的整数次方

链接:
来源:牛客网

[编程题]数值的整数次方.
热度指数: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 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23