zoukankan      html  css  js  c++  java
  • 剑指offer:数值的整数次方

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

    比较简单的代码:
    1. double Power(double base, double exponent)
    2. {
    3. double result=1.0;
    4. for(int i=1; i<=exponent; ++i)
    5. {
    6. result*=base;
    7. }
    8. return result;
    9. }
    这个没有考虑到指数小于1的时候。

    使用如下的代码,这个用一个全局变量来标示。
    1. double Power(double base, int exponent)
    2. {
    3. g_InvalidInput = false;
    4. if(equal(base, 0.0) && exponent < 0)
    5. {
    6. g_InvalidInput = true;
    7. return 0.0;
    8. }
    9. unsigned int absExponent = (unsigned int)(exponent);
    10. if(exponent < 0)
    11. absExponent = (unsigned int)(-exponent);
    12. double result = PowerWithUnsignedExponent(base, absExponent);
    13. if(exponent < 0)
    14. result = 1.0 / result;
    15. return result;
    16. }
    17. double PowerWithUnsignedExponent(double base, unsigned int exponent)
    18. {
    19. double result = 1.0;
    20. /
    21. for(int i = 1; i <= exponent; ++i)
    22. result *= base;
    23. return result;
    24. }
    25. bool equal(double num1, double num2)
    26. {
    27. if((num1 - num2 > -0.0000001)
    28. && (num1 - num2 < 0.0000001))
    29. return true;
    30. else
    31. return false;
    32. }



    由于计算机表示小数都有误差因此不能用==来判断两个小数是否相等。如果两者差值很小,则认为相等。

    用以下的方法实现会更好一些。
    下图这个公式:

    使用递归的方式来实现。
    1. double PowerWithUnsignedExponent(double base, unsigned int exponent)
    2. {
    3. if(exponent == 0)
    4. return 1;
    5. if(exponent == 1)
    6. return base;
    7. double result = PowerWithUnsignedExponent(base, exponent >> 1);
    8. result *= result;
    9. if((exponent & 0x1) == 1)
    10. result *= base;
    11. return result;
    12. }


















  • 相关阅读:
    用于视频行为识别的双流卷积网络
    python更改默认版本
    ubuntu16安装ROS(包括win10子系统ubuntu同样能用)
    js中的new做了什么?
    Promise是什么?
    滚动轴 scroll
    什么是ES6?
    什么是token及怎样生成token
    mongodb 删库跑路
    css如何设置背景图片?background属性添加背景图片
  • 原文地址:https://www.cnblogs.com/zhuzhenfeng/p/4665205.html
Copyright © 2011-2022 走看看