数值的整数次方

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

思路:例如,我们要求一个数的16次方,可以先求这个数的平方,然后在平方的基础上再求这个数的4次方,在4次方的基础上求8次方,在8次方的基础上求16次方。

我们可以用如下公式求a的n次方

数值的整数次方_第1张图片

#include<iostream>
using namespace std;
double Power(double base, int exponent)
{
	double result = 0.0;
	if (exponent == 0) //指数为0
		return 1;
	else if (exponent == 1) //指数为1
		return base;
	else
	{
		//递归先求平方,再求4次方,以此类推求n次方
		result = Power(base, exponent >> 1);
		result *= result;
		if (exponent & 0x1 == 1)//当为奇数次方时
			result *= base;
	}
	return result;
}
int main()
{
	double base; //底数
	int exponent;//指数
	cout << "please enter two number:"<<endl;
	cin >> base;
	cin >> exponent;
	double ret = Power(base,exponent);
	cout << ret << endl;
	return 0;
}

数值的整数次方_第2张图片

你可能感兴趣的:(剑指offer)