(原) 剑指offer--之数值的整数次方
题目描述
#include <iostream>
using namespace std;
class Solution {
public:
double Power(double base, int exponent) {
double result = 1.0;
if (base == ) return 0.0;
else if (base != && exponent == ){
return 1.0;
} else if (exponent < ){
exponent = -exponent;
for (int i = ; i < exponent; ++i)
result *= base;
return 1.0 / result; }
else{
for (int i = ; i < exponent; ++i)
result *= base;
return (double)result;
}
}
}; int main(){
Solution su;
double base;
int exponent;
while (true){
scanf("%lf%d", &base, &exponent);
printf ("%lf",su.Power(base, exponent));
}
}
找来原书看了之后,好吧我承认我智商太低。
关于代码的完整性:
1:满足基本需求。
2:对一些极端值要考虑到,比如一些边界值。
3:对一些错误输入,有相应的处理方法。
4:最好考虑到算法的效率。
下面是按着原书方法又实现了一次
全面低效的方法:
#include <iostream>
using namespace std; bool InvalidInput = false; bool equal(double val1, double val2)
{
if((val1 - val2 < 0.0000001) && (val1 - val2 > -0.0000001))
return true;
else
return false;
} double Power(double val, int exponent)
{
InvalidInput = false;
if(equal(val, 0.0) && exponent < )
{
InvalidInput = true;
return 0.0;
}
int absExponent = (unsigned int)(exponent);
double rev = 1.0;
if(exponent < )
absExponent = (unsigned int)(-exponent);
for(int i = ; i < absExponent; ++i)
rev *= val;
if(exponent < )
return 1.0 / rev;
else
return rev;
}
高效的方法:原书是这样描述的:
如果exponent = 32,按照上述方法我们要循环31次乘法,
而如果我们知道了base 的16次方可以直接平方就得到了base的32次方
同理在8次方的基础上求16次方很容易用递归实现。
double powerwithunsign(double base, int exponent){
    if (exponent == ) return ;
    if (exponent == ) return base;
    double result = powerwithunsign(base, exponent>>);
    result *= result;
    if ((exponent & 0x1) == )
        result *= base;
    return result;
}
(原) 剑指offer--之数值的整数次方的更多相关文章
- 《剑指offer》 数值的整数次方
		本题来自<剑指offer> 数值的整数次方 题目: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 思路: 代码从三个方面处 ... 
- 【剑指Offer】数值的整数次方 解题报告(Python)
		[剑指Offer]数值的整数次方 解题报告(Python) 标签(空格分隔): LeetCode 题目地址:https://www.nowcoder.com/ta/coding-interviews ... 
- (3)剑指Offer之数值的整数次方和调整数组元素顺序
		一 数值的整数次方 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 问题解析: 这道题算是比较麻烦和难一点的一个了.我这里采 ... 
- 【Java】 剑指offer(15) 数值的整数次方
		本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 实现函数double Power(double base, int ... 
- 【剑指offer】数值的整数次方
		版权声明:本文为博主原创文章,未经博主同意不得转载. https://blog.csdn.net/mmc_maodun/article/details/25506085 转载请注明出处:http:// ... 
- Go语言实现:【剑指offer】数值的整数次方
		该题目来源于牛客网<剑指offer>专题. 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 保证base和exponent不 ... 
- 剑指 Offer 16. 数值的整数次方
		实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题. 来源:力扣(LeetCode) 链接 ... 
- 剑指OFFER之数值的整数次方(九度OJ1514)
		题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 输入: 输入可能包含多个测试样例.对于每个输入文件,第一行输入一个整数T,表 ... 
- 剑指Offer 12. 数值的整数次方 (其他)
		题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 题目地址 https://www.nowcoder.com/practice/ ... 
- 剑指offer:数值的整数次方
		题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 解题思路: 一开始直接用一个for循环做连乘,测了一下,发现这个指数可能是负 ... 
随机推荐
- 洛谷 P4503 [CTSC2014]企鹅QQ
			暴力枚举不同的一位即可.. 主要是常数问题 1.统计答案时用sort速度快于用tr1/unordered_map,后者又快于map (tr1/unordered_map完全达不到理论复杂度上的O(1) ... 
- simhash与重复信息识别
			在工作学习中,我往往感叹数学奇迹般的解决一些貌似不可能完成的任务,并且十分希望将这种喜悦分享给大家,就好比说:“老婆,出来看上帝”…… 随着信息爆炸时代的来临,互联网上充斥着着大量的近重复信息,有效地 ... 
- yii2 使用gii生成代码文件
			访问地址: http://localhost/yii2-test/web/index.php?r=gii 如果你通过本机以外的机器访问 Gii,请求会被出于安全原因拒绝. 在web.php修改gii ... 
- Java环境安装与Eclipse安装
			1.jdk下载安装 2.Eclipse下载安装 遇到的问题: 出现问题原因可能有两个:1)没有配置环境变量 2)jdk和eclipse安装的版本不一致,都是64位或者都是32位. 本人出现错误的原因: ... 
- deepin15.2无线网无法使用
			原文链接:https://bbs.deepin.org/forum.php?mod=viewthread&tid=40276&highlight=%E6%97%A0%E7%BA%BF% ... 
- as  开启代码混淆和混淆规则
			app的builde.gradle的文件下,buildTypes节点添加release节点,minifyEnabled属性表示是否开启混淆,proguardFiles表示混淆依赖的文件,具体开启方法如 ... 
- NBUT 1115  Cirno's Trick (水)
			题意: 给出多个double数,去掉其最小的和最大的,再对余下的求均值. 思路: 再输入时将最大和最小去掉,顺便统计非最值的和,输出时除一下个数即可. #include <bits/stdc++ ... 
- SQLite基础教程目录
			SQLite基础教程目录 SQLite主页 SQLite概述 SQLite -安装 SQLite -命令 SQLite -语法 SQLite -数据类型 SQLite -创建数据库 SQLite -附 ... 
- leetcode_1095. Find in Mountain Array_[Binary Search]
			https://leetcode.com/problems/find-in-mountain-array/ 题意:给定一个MountainArray(定义见题目),找到其中最早出现的target值的下 ... 
- Spring @Transactional at interface
			java - Where should I put @Transactional annotation: at an interface definition or at an implementin ... 
