每天一道算法题(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.注意改函数对所有的底数指数的正负运算都适用


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值