JSMS22-数值的整数次方,剑指offer11

147 阅读1分钟

实现函数double power(double base,int exp)

分析:这道题实际上呢,不难,难在考虑边界问题,也就是当base和exp为负数的时候。有的时候我写代码有点矛盾,想着做算法题,能解决大多数情况就行了,但是实际上做开发的时候需要考虑各种各样的边界问题。

#include <stdio.h>

double Power(double base,int exp)
{
	double ret;
	if(exp==0)
	{
		ret=1;
	}else
	{
		int tmp=exp;
		ret=base;
		if(exp<0)
		{
			tmp*=-1;
		}
		for(int i=0;i<tmp-1;i++)
		{
			ret*=base;
		}
		if(exp<0)
		{
			ret=1/ret;    //这里当exp小于0的时候取ret的倒数
			if(base<0)
			{
				ret*=-1;    //这里当base小于0的时候结果取负数
			}
		}
	}
	return ret;
}