【剑指offer】刷题记录-数值的整数次方

题目描述

给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。

思路:这个题就是要考虑全面。因为指数是int类型,那么指数可能是0、正整数、或者负整数。可以分为这几种情况:

1.底数为0,指数为负数,无意义

2.指数为0,返回1

3.指数为负数,返回时变为倒数

4.指数为正数,正常的次方运算

// 数值的整数次方
public class Solution {
	public double Power(double base, int exponent) throws Exception {
		double result = 0.0;
		if (isEqual(base, 0.0) && exponent < 0) {
			throw new Exception("无意义");
		}
		if (exponent == 0) {
			return 1.0;
		}
		// 如果指数为正整数
		if (exponent > 0) {
			result = powerWithExponent(base, exponent);
		} else {
			// 指数为负整数
			result = powerWithExponent(1 / base, -exponent);
		}
		return result;
	}

	public boolean isEqual(double num1, double num2) {
		if ((num1 - num2) < 0.0000001 && (num1 - num2) > -0.0000001) {
			return true;
		} else {
			return false;
		}
	}

	public double powerWithExponent(double base, int exponent) {
		double result = 1.0;
		for (int i = 1; i <= exponent; i++) {
			result = result * base;
		}
		return result;
	}
}

猜你喜欢

转载自blog.csdn.net/Littlecome/article/details/82019474