剑指offer——数值的整数次方

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

下面来看代码:

public class PowerSolution {
 public static double Power(double base, int exponent) {
      //当底数为0,指数小于0,则为非法情况。
     if (equal(base,0.0)&&exponent<0) {
        return 0.0f;
    }
     //当指数小于0的时候即求该数的倒数再乘方
       if (exponent<0) {
           int absExponent = -exponent;
           double result = PowerWithNonNegative(base, absExponent);
           result = 1.0/result;

           return result;
    }else {
        return PowerWithNonNegative(base, exponent);
    }
  }

  //自定义方法来判断两个double的数是不是相等,因为有误差所以在范围内都认为相等
 public static boolean equal(double a, double b){
     if (((a-b)>-0.00000001)&&((a-b)<0.00000001)) {
        return true;
    }else {
        return false;
    }

 }

 public static double PowerWithNonNegative(double base, int exponent){
        if(exponent==0){
            return 1;
        }

        if(exponent==1){
            return base;
        }

       double result = PowerWithNonNegative(base,exponent>>1);
       result*=result;

        //如果是奇数次方的情况,最终除2余1要与base相乘
        if((exponent&0x1)==1){
            result *=base;
        }
        return result;
 }
 }

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-09 10:01:13

剑指offer——数值的整数次方的相关文章

[剑指offer] 浮点数的整数次方

题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 输入描述 base,exponent 输出描述 base的exponent次方 题目分析 首先要注意,指数正负和零的情况判别: ①任何数的0次方等于0 ②0不能做除数(也就是指数为负时,基数不能为0) 解法一 运行时间:27ms 占用内存:636k public class Solution { public double Power(double base, int exp

剑指:数值的整数次方

题目描述 实现函数 double Power(double base, int exponent),求 base 的 exponent 次方. 不得使用库函数,同时不需要考虑大数问题. 注意: 不会出现底数和指数同为 0 的情况. 注意判断值数是否小于 0.另外 0 的 0 次方没有意义,也需要考虑一下,看具体题目要求. 样例1 输入:10 ,2 输出:100 样例2 输入:10 ,-2 输出:0.01 解法 解法一 public static double power(double base,

剑指Offer09 数值的整数次方

1 /************************************************************************* 2 > File Name: 09_Power.c 3 > Author: Juntaran 4 > Mail: [email protected] 5 > Created Time: 2016年08月29日 星期一 21时07分21秒 6 *********************************************

剑指Offer-数值的整数次方

数值的整数次方 题目描述: ??给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 解题思路: ??注意判断输入的int类型的整数exponent是正数还是负数,0: 如果是正数,使用循环来让base自身乘exponent次,直接返回: 如果是负数,按照正数的方法得到结果result,然后返回1.0/result,.: 如果是0,直接返回1. 我的Java源代码: public class Solution { public doubl

剑指offer之关于整数的处理

首先是整数次方的处理 在这处理的时候有几个细节主义处理 1.当指数是负数的时候 2.当指数式0的时候 3.当不满足条件的时候要抛出异常 再一个就是常用的将一个树化为二进制的形式,或者是求整数的幂或者矩阵 的幂 这个函数写的时候是用递归来写的,所以要注意跳出来的条件,第二使用递归来实现,三,用&操作代替原来的求%的操作,而且在用之前都要考虑这个范围的问题,一般会说参数为n,可是这个n到底是多大呢,用相应的类型去求解相应规模的运算 ----------------------------------

12、剑指offer--数值的整数次方

题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 解题思路:首先要注意特殊情况的处理   base为0情况  exponent为0 为1情况  exponent为负数情况 1 #include <iostream> 2 using namespace std; 3 class Solution { 4 public: 5 //要注意的几点 6 //1.base == 0 7 //2.exponent == 0:==1 8

剑指offer—字符串转换整数

对于这个问题, 本题考查的实际上就是字符串转换成整数的问题,或者说是要你自行实现atoi函数.那如何实现把表示整数的字符串正确地转换成整数呢?以"345"作为例子: 当我们扫描到字符串的第一个字符'3'时,由于我们知道这是第一位,所以得到数字3. 当扫描到第二个数字'4'时,而之前我们知道前面有一个3,所以便在后面加上一个数字4,那前面的3相当于30,因此得到数字:3*10+4=34. 继续扫描到字符'5','5'的前面已经有了34,由于前面的34相当于340,加上后面扫描到的5,最终

剑指offer-数值的整数次方-调整数组顺序使奇数位于偶数前面-代码的完整性-python

题目描述 给定一个double类型的浮点数base和int类型的整数exponent.求base的exponent次方. 保证base和exponent不同时为0 思路 求base的exponent次方,exponent有两种可能性, exponent>0 for循环exponent次,结果与base相乘 exponent<0 for循环exponent次,结果与base相除 输出结果: # -*- coding:utf-8 -*- class Solution: def Power(self

剑指offer之【整数中1出现的次数(从1到n整数中1出现的次数)】

题目: 整数中1出现的次数(从1到n整数中1出现的次数) 链接: https://www.nowcoder.com/practice/bd7f978302044eee894445e244c7eee6?tpId=13&tqId=11184&rp=2&ru=/ta/coding-interviews&qru=/ta/coding-interviews/question-ranking 题目描述: 求出1~13的整数中1出现的次数,并算出100~1300的整数中1出现的次数?为此