原创

【剑指Offer】012——数值的整数次方 (数值)

题目描述

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

解题思路

需要考虑指数和底的一些情况。

  1. 指数为负时,可以先对指数求绝对值,算出次方的结果后再取倒数
  2. 当底数为0,指数为负时,会出现对0求倒数情况,要特殊处理
  3. 0的0次方在数学上没有意义,因此无论输出0还是1都是可以接受的
  4. 在计算次方的时候,除了简单的遍历,我们可以使用递归的思想,如下公式,来减少计算量:
    file

参考代码

Java

    public class Solution {
        public double Power(double base, int exponent) {
            int n = exponent; // 指数
            if (n < 0)
                n = -n;
            double result = 1;
            for (int i = 0; i < n; i++) {
                result = result * base;
            }
            return exponent > 0 ? result : 1 / result;
        }
    }

Python

class Solution:
    def Power(self, base, exponent):
        n = exponent
        if exponent < 0:
            n = -n
        result = 1
        for i in range(0,n):
            result = result * base
        # 三元运算
        return  result if exponent>0 else 1/result
正文到此结束
本文目录