剑指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-, ...
随机推荐
- poj 3262 Protecting the Flowers 贪心
题意:给定n个奶牛,FJ把奶牛i从其位置送回牛棚并回到草坪要花费2*t[i]时间,同时留在草地上的奶牛j每分钟会消耗d[j]个草 求把所有奶牛送回牛棚内,所消耗草的最小值 思路:贪心,假设奶牛a和奶牛 ...
- Oracle判断语句集合(转载)
SELECT decode(sign(to_date('2008-05-01', 'yyyy-MM-dd') - to_date('2008-03-01', 'yy ...
- Linux 计算器
bc: 默认没有小数位,使用scale=2设置保留的位数.
- pip安装lxml报错
报错信息![](6a9f8494-8771-49c6-a663-cdcb2bdea123_files/0f4e7b93-9725-4c02-97a8-298d395b6169.png) 解决方法:`` ...
- Scala-Partial Functions(偏函数)
如果你想定义一个函数,而让它只接受和处理其参数定义域范围内的子集,对于这个参数范围外的参数则抛出异常,这样的函数就是偏函数(顾名思异就是这个函数只处理传入来的部分参数). 偏函数是个特质其的类型为Pa ...
- uva11624 - Fire!
uva11624 - Fire! 火在蔓延,人在走.火会蔓延,不会熄灭,我们可以确定某个点着火的时间(广搜).对于J来说,要是他走到某点的时间比火蔓延到该点的时间要短,那么他走到该点的时候,火还没蔓延 ...
- 介绍一款Android小游戏--交互式人机对战五子棋
文章转载至CSDN社区罗升阳的安卓之旅,原文地址:http://blog.csdn.net/luoshengyang/article/details/6589025 学习Android系统开发之余,编 ...
- configure交叉编译
今天在交叉编译时犯了一个错误,纠结了好久,曾经交叉编译器的前缀基本上都是用arm-linux-,这次换了一个新环境是arm-none-linux-gnueabi-,于是想当然的把configure中的 ...
- windows-JDK环境变量设置
JAVA_HOME=C:\Program Files\Java\jdk1.6.0_43;CLASS_PATH=.;%JAVA_HOME%\lib;%JAVA_HOME%\lib\tools.jar;p ...
- flex 调用WebService2(基于.net)
flex 访问WebService的方法有很多种,使用FLEX4中的"数据/服务"功能可以自动生成访问WebService的代理类,这样可以避免把所有的数据访问都写到MXML页面上 ...