zoukankan      html  css  js  c++  java
  • 面试题11:数值的整数次方

    题目:实现函数double Power(double Power(double base, int exponent),求base的exponent次方。不得使用库函数,同时不需要考虑大数问题。

    解法一:全面但不够高效的解法

    需要注意的地方:

    • 指数为负数的情况。
    • 底数为0且指数为负数的情况。(无效输入)
    • 底数为0且指数为0的情况。(0的0次方在数学上是没有意义的,因此无论是输出0还是1都可以,需要要面试官说清楚)
     1 bool g_InvalidInput = false;//全局变量标识输入是否出错
     2 double power(double base, int exponent)
     3 {
     4     if ( equal(base,0.0) && exponent < 0)
     5     {
     6         g_InvalidInput = true;
     7         return 0.0;
     8     }
     9     if (exponent < 0)
    10         return 1.0/powerWithUnsignedExponent(base, -1*exponent);
    11     else
    12         return powerWithUnsignedExponent(base, exponent);
    13     
    14 }
    15 //判断两个小数是否相等只能判断它们之差的绝对值是不是在一个很小的范围内。
    16 bool equal(double num1, double num2)
    17 {
    18     if ((num1-num2 > -0.0000001)
    19     && (num1-num2 < 0.0000001))
    20     return true;
    21     else
    22         return false;
    23 }
    24 double powerWithUnsignedExponent(double base, unsigned int exponent)
    25 {
    26     if (exponent == 0)
    27         return 1;
    28     if (exponent == 1)
    29         return base;
    30     double result = powerWithUnsignedExponent(base, exponent>>1);
    31     result *= result;
    32     if (exponent & 1 == 1)//exponent为奇数
    33         result*=base;
    34     return result;
    35 }
  • 相关阅读:
    nginx-rtmp-module搭建流媒体服务器
    rabbitmq安装
    opencv+python (3)
    linux命令
    mysql语句概览
    BUUCTF V&N-misc内存取证
    2018 HEBTUCTF 部分misc
    2020 安恒2月月赛 misc
    2018.6.1 铁三数据赛 复现
    2020 i春秋新春战疫公益赛 misc
  • 原文地址:https://www.cnblogs.com/happygirl-zjj/p/4612627.html
Copyright © 2011-2022 走看看