zoukankan      html  css  js  c++  java
  • 数值的整数次方

    1. 考虑各种情况  (是一种情况多的题)

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

    考虑全局变量来标志异常

    注意不能直接判断 double 类型的数据==0;  是有精度的!!!应该用equal  自己写或者调用c库的,但是C库好像有的时候不能用

         bool g_validoutput;//用来标志异常
         double Power(double base, int exponent)
         {
           g_validoutput=false;//初始值 代表没什么异常!!!
            
             if(equal(base, 0.0)&&exponent<0)//0的负多少次方  除数是0,异常
             {  
               g_validoutput=true;  //代表此处是异常
               return 0.0;//并且不耽误输出!!
             
             } 
             //每次都输入它  正数的话他不变
             unsigned int Exponent=(unsigned int)exponent;//初始化为无符号的exponent
             
             if (exponent<0)//次方是负数
             Exponent=-exponent;//变成了正的; 
            
             double result=Powersolve(base,Exponent);//求结果
             
             if (exponent<0)//次方是负数
             result=1.0/result;
             
             return result;
     
         }
         

    //效率低下 double Powersolve(double base, int exponent)//正常情况下的运算 { double result= 1.0; for(int i=1;i<=exponent;i++) { result*=base; } return result; } //类似之前的斐波那契函数里一个计算方式 double Powersolve(double base, unsigned int exponent)//计算base不为0,exponent为非负数情况下的幂值 { if (exponent == 0) return 1; if (exponent == 1) return base; double result = PowerWithUnsignedExponent(base, exponent >> 1);//使用右移作为除2操作,会很快,exponent为正,所以不怕右移 result *= result; if ((exponent & 0x1) == 1)//使用与操作判断是否是奇数,也是一种加速优化操作 result *= base; return result; } bool equal(double num1,double num2)//由于精度原因,不能用==,必须让二者差在一个很小范围内就算相等 { if((num1-num2>-0.000001)&&(num1-num2)<0.000001) return true; else return false; }
  • 相关阅读:
    《C# to IL》第一章 IL入门
    multiple users to one ec2 instance setup
    Route53 health check与 Cloudwatch alarm 没法绑定
    rsync aws ec2 pem
    通过jvm 查看死锁
    wait, notify 使用清晰讲解
    for aws associate exam
    docker 容器不能联网
    本地运行aws lambda credential 配置 (missing credential config error)
    Cannot connect to the Docker daemon. Is 'docker daemon' running on this host?
  • 原文地址:https://www.cnblogs.com/cgy1012/p/11378640.html
Copyright © 2011-2022 走看看