剑指offer-面试题11.数值的整数次方
题目:实现函数double Power(double base,int exponent),求base的
exponent次方。不得使用库函数,同时不需要考虑大数的问题.
这道题看似很简单:
然而需要考虑的方面到不少:
1.如何处理指数为负数,将负数当成正数处理 对结果求倒
2.当指数为负数的时候并且底数为0的时候如何处理
3.当指数为0底数为0的情况
这里我们这样考虑,把底数为0的所有输入处理为无效输入,返回0
代码实现如下:
#include <iostream>
using namespace std; double Power(double base,int exponent)
{
bool zerosflag=false;
if(base<0.00001&&base>-0.00001)
{
zerosflag=true;
} if(zerosflag)
{
return 0.0;
} if(exponent==)
{
return 1.0;
} bool flagminus=false;
if(exponent<)
{
flagminus=true;
exponent=-exponent;
} double answer=1.0;
for(int i=;i<exponent;i++)
{
answer*=base;
} if(flagminus)
{
return /answer;
}
else
{
return answer;
} } int main(int argc, char* argv[])
{
double base;
int exponent;
double answer;
while()
{
cout<<"Please input base number: ";
cin>>base;
cout<<"Please input exponent number: ";
cin>>exponent;
answer=Power(base,exponent); if(answer==0.0)
{
cout<<"Invalid Input: base="<<base<<" exponent="<<exponent;
}
else
{
cout<<"The Power is: "<<answer;
}
cout<<endl;
} return ;
}
测试截图如下:

当然剑指offer中还提出了一种递归的解法,大家可以自行参考。
对了这里有个小说明:
由于计算机在表示小数都有误差,我们不能直接用等号判断两个小数是否相等。
如果两个小数的差的绝对值很小,就可以认为它们相等。
剑指offer-面试题11.数值的整数次方的更多相关文章
- 剑指Offer:面试题11——数值的整数次方(java实现)
题目描述: 实现函数double Power(double base, int exponent),求base的exponent次方,不得使用库函数,同时不需要考虑大数问题 思路:本题的重点考察内容是 ...
- 剑指offer_面试题11 数值的整数次方_考察代码的完整性
测试通过代码: package t0825; public class Power { public static void main(String[] args){ System.out.print ...
- 剑指Offer - 九度1514 - 数值的整数次方
剑指Offer - 九度1514 - 数值的整数次方2013-11-30 00:49 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponen ...
- 剑指offer(12)数值的整数次方
题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 题目分析 这道题用传统的方法也可以做,只不过效率太低,这里我们用到快速幂的方法 ...
- 剑指offer十二之数值的整数次方
一.题目 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 二.思路 1.传统方法计算,时间复杂度O(n) 2.递归方式计算,时间复杂度O ...
- 【剑指Offer】12、数值的整数次方
题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 解题思路: 本题看似比较简单,是一个简单的指数运算,但需要完 ...
- 剑指offer编程题Java实现——面试题11数值的整数次方
题目: 实现函数double power(double base,int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题. 解题思路:最一般的方法实现数值 ...
- 剑指offer 面试题43. 1~n整数中1出现的次数
leetcode上也见过一样的题,当时不会做 看了一下解法是纯数学解法就没看,结果剑指offer上也出现了这道题,那还是认真看下吧 对于数字abcde,如果第一位是1,比如12345,即计算f(123 ...
- 剑指offer——面试题11:旋转数组的最小数字
#include"iostream" using namespace std; int GetMinNumber(int *data,int len) { ,right=len-, ...
随机推荐
- 再造轮子之网易彩票-第一季(IOS 篇 by sixleaves)
前言 在网上看了别人做的模仿网易彩票的项目, 于是也跟着用自己的想法做了一篇.写这篇博客的目的, 在于UI综合的一次小练习, 同时总结和串联其各个控件之间的应用.封装思想等.考虑到有人上不了githu ...
- DBA 经典面试题(2)
三.备份恢复类 ================================================================================ 1:备份如何分 ...
- chroot 与 jail
所谓“监牢”就是指通过chroot机制来更改某个进程所能看到的根文件夹,即将某进程限制在指定文件夹中,保证该进程仅仅能对该文件夹及其子文件夹的文件有所动作,从而保证整个server的安全. 创建chr ...
- Guava源码分析——ServiceManager
ServiceManager类: 用于监控服务集的管理器,该类提供了诸如startAsync.stopAsync.servicesByState方法来运行.结束和检查服务集,而且,通过监听器 ...
- 成语接龙(dfs)
成语接龙 Time Limit: 1000 MS Memory Limit: 32768 K Total Submit: 92(17 users) Total Accepted: 23(14 user ...
- 1. GDAL与OpenCV2.X数据转换(适合多光谱和高光谱等多通道的遥感影像)
一.前言 GDAL具有强大的图像读写功能,但是对常用图像处理算法的集成较少,OpenCV恰恰具有较强的图像处理能力,因此有效的结合两者对图像(遥感影像)的处理带来了极大的方便.那么如何实现GDAL与o ...
- Oracle监听静态注册和动态注册
静态注册和动态注册总结 一.什么是注册? 注册就是将数据库作为一个服务注册到监听程序.客户端不需要知道数据库名和实例名,只需要知道该数据库对外提供的服务名就可以申请连接到数据库.这个服务名可能与实例名 ...
- 创建一个简单的配置android编译环境的脚本
由于有多个Android项目,每个项目配置编译环境时选项都不同,所以尝试写一个sh脚本来完成这个功能. 首先进入bin文件夹,新建一个文件enbuild $ cd ~/bin $ touch ...
- web验证码
前台引用.aspx: <%@ Page Language="C#" AutoEventWireup="true" CodeFile="YanZh ...
- Struts2中的ActionContext
ActionContext(Action上下文) ActionContext介绍 通过上面用户注册例子的学习,我们知道Xwork与Web无关性,我们的Action不用去依赖于任何Web容器,不用和那些 ...