数值的整数次方

题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

思路:

 1 关于次幂的问题特殊的情况,比如次幂为负数,或者基数为0时等等复杂的情况

 2 机器中浮点数的比较是由误差的,因此double类型的比较,不能用简单的a==0来比较。一般的比较方式是,相减的差在一个很小的区间内,我们就认为是相等的

class Solution {
public:
    double Power(double base, int exponent) {
    	double mul=1.0;
		 /* 如果exponent = 0 输出1 */
	        if(exponent == 0)
	        {
	            return 1.00000;
	        }

	        /* 如果base = 0 输出0 */
	        if(base >= -0.000001 && base <= 0.000001)
	        {
	            return 0;
	        }
	        /* 如果指数大于0 */
	        if(exponent > 0)
	        {
	            for(int index = 0; index < exponent; index++)
	            {
	                mul *= base;
	            }
	        }
	        else
	        {
	            exponent = -exponent;
	            for(int index = 0; index < exponent; index++)
	            {
	                mul *= base;
	            }
	            mul = 1.0/mul;
	        }

	        return mul;
    }
};

  

http://blog.csdn.net/qq_23217629/article/details/51729501

http://blog.csdn.net/Yanfucahng/article/details/52876300?utm_source=itdadao&utm_medium=referral

时间: 2024-08-01 10:45:23

数值的整数次方的相关文章

【剑指offer】数值的整数次方

转载请注明出处:http://blog.csdn.net/ns_code/article/details/25506085 剑指offer上的第十一题,九度OJ上测试通过. 题目描述: 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 输入: 输入可能包含多个测试样例.对于每个输入文件,第一行输入一个整数T,表示测试案例的数目,接下来的T行每行输入一个浮点数base和一个整数exponent,两个数中间用一个空格隔开. 输出: 对应每

数值的整数次方-剑指Offer

数值的整数次方 题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 思路 主要有几点需要注意 由于计算机表示小数(float和double)都有误差,不能直接用等号(==)判断两个小数是否相等.若两个小数的差的绝对值很小,比如小于0.0000001,就可以认为它们相等 注意考虑输入值得全面性,正负可能,而且0的负数次幂没意义. 代码 解法一: public class Solution { public double Powe

《剑指Offer》题目:数值的整数次方

题目描述:数值的整数次方给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 题目分析:题目的关键在于要考虑exponent为负数的情况. Java代码: public class Power { public static double power(double base, int exponent) { double res = 1.0; if(exponent == 0){ return 1.0; } if(exponent > 0

[剑指offer]Q11:数值的整数次方

pow(base, exponent) 考虑一下几种情况: base = 0, 那么直接返回0 base = 1, 那么直接返回1 exponent = 0, 那么直接返回1, 注意base= 0 exponent = 1, 那么直接返回 base exponent  为正为负 的情况 主要考察的点是将问题缩减,用折半的思想.这个题细节还是很多的,为了便于验证,leetcode上恰好有这个题,建议在线AC一下. def equal(self, a, b): return abs(a - b) <

数值的整数次方(C++ 和 Python 实现)

(说明:本博客中的题目.题目详细说明及参考代码均摘自 "何海涛<剑指Offer:名企面试官精讲典型编程题>2012年") 题目 实现函数 double Power(double base, int exponent),求 base 的 exponent 次方.不得使用库函数,同时不需要考虑大数问题. 算法设计思想 无论是简单直接方法,还是高效的方法,都需要首先全面考虑 base 和 exponent 的可能的输入:正数.负数和 0.实现的基本思想是把数值的整数次方,转化为数

c++实现数值的整数次方(类似pow())作用

/* * 计算数值的整数次方.cpp * * Created on: 2018年4月13日 * Author: soyo */ #include<iostream> #include<math.h> #include<ctime> using namespace std; int main() { double power(double base,int exp); int x=2,y=3; long int z; z=pow(2,3); cout<<&qu

剑指Offer--第16题 数值的整数次方

第16题 数值的整数次方 题目:给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 思路 看到有点懵,第一感觉觉得是不是应该考虑0的0次或者负数情况,还有就是浮点类型没办法使用"="号,最后自己以偷懒的方式直接调用Java的API,如果面试题中不让调用库函数,那么基本上这题就是挂了可能. 以上题目描述来自牛客,没有对使用做限制.真正的剑指offer上有限制条件不得使用库函数,同时不需要考虑大数问题. 自己的low代码 publ

面试题16:数值的整数次方

// 面试题16:数值的整数次方 // 题目:实现函数double Power(double base, int exponent),求base的exponent // 次方.不得使用库函数,同时不需要考虑大数问题. 解题思路: 解题并不难,重要的是要考虑到输入的各种情况,并且有相应的处理. double和int都是可以取负数和0的,如果base取0,exponent<0,结果显然是不存在的. base取0,exponent取非负,直接返回1就可以了. 其他情况,正常运算就好,要注意如果expo

《剑指offer》第十六题(数值的整数次方)

// 面试题:数值的整数次方 // 题目:实现函数double Power(double base, int exponent),求base的exponent // 次方.不得使用库函数,同时不需要考虑大数问题. #include <iostream> #include <cmath> using namespace std; bool g_InvalidInput = false;//使用全局变量作为错误处理方式 bool equal(double num1, double nu

剑指Offer对答如流系列 - 数值的整数次方

面试题15:数值的整数次方 题目描述 实现函数double Power(double base, int exponent),求base的exponent次方.不得使用库函数,同时不需要考虑大数问题. 问题分析 三思而后行,这道题如果没事实现考虑好,非常容易出错. 首先分析列举出所有的场景. base的值 可能为正数也可能为负数(包含整数.小数) exponent的值可能为正整数也可能为负整数 base的值的处理是比较简单的,对于exponent的处理就要多加考虑了. 当exponent的值为负