zoukankan      html  css  js  c++  java
  • 每天一道算法题(24)——自定义幂函数pow

    double myPower(double base, int exponent){
    	if(exponent==0)
    		return 1;
    	if(exponent==1)
    		return base;
    	if(exponent==-1)//当为是负数的情况
    		return 1.0/base;
    
    	double result=1.0;
    	result=myPower(base,exponent>>1);
    	result*=result;
    	if(exponent&1)//绝对值为奇数
    	     result*=base;
    
             return result;
    }


           1.使用了递归的思路。即将幂除2,在将结果平方的思路。对于幂为正奇数,右移位产生除即取下整数的结果,结果还要乘以一遍底数

            2.对于幂为负奇数,右移也产生取下整数的效果。不同的是结果变小,即如-5>>1==-3,-7>>1==-4。因此,也得乘以一遍底数。

            3.不管是正数还是负数,其补码与1相与都能判断其绝对值的奇偶.

            4.-1的补码右移始终为-1,因此要添加嵌套终止条件

            5.注意改函数对所有的底数指数的正负运算都适用


  • 相关阅读:
    webstorm
    数据库中的内连接和外连接
    JVM加载class文件的原理机制
    内部类
    getString()方法与getObject()方法的区别
    Class.forName的作用
    JDBC事务处理
    合并两个排序的链表
    链表中倒数第k个结点
    反转链表
  • 原文地址:https://www.cnblogs.com/engineerLF/p/5393023.html
Copyright © 2011-2022 走看看