zoukankan      html  css  js  c++  java
  • 数值的整数次方


    给定一个 double 类型的浮点数 base 和 int 类型的整数 exponent。求 base 的 exponent 次方。保证 base 和 exponent 不同时为 0


    本题需要考虑三种情况:

    • exponent == 0
    • exponent > 0
    • exponent < 0

    解法一

    暴力解法,分三种情况考虑

    public class Solution {
        public double Power(double base, int exponent) {
            if(exponent < 0) {
                base = 1 / base;
                exponent = -exponent;
            }
            if(exponent == 0) {
                return 1.0;
            }
            double result = 1.0;
            for(int i = 1; i <= exponent; i++) {
                result *= base;
            }
            return result;
        }
    }
    

    解法二

    使用快速幂可以解决该问题,假设我们求 x8,如果我们知道 x4,那么 x8 = (x4)2,所以 xn = (xn/2)2

    但是还有个小问题,如果 n 是偶数,那么上述没问题。如果 n 是奇数,则 xn = (xn/2)2 * x

    public class Solution {
        
        public double Power(double base, int exponent) {
            if(exponent < 0) {
                base = 1 / base;
                exponent = -exponent;
            }
            return q_Power(base, exponent);
        }
        
        private double q_Power(double base, int exponet) {
            if(exponet == 0) {
                return 1.0;
            }
            double result = q_Power(base, exponet / 2);
            if((exponet & 1) != 0) {
                return result * result * base;
            } else {
                return result * result;
            }
        }
    }
    

  • 相关阅读:
    SQLite 基本使用
    SQLite 语法
    html5晋级之路-css介绍
    html5晋级之路-web storage
    html5晋级之路-元素语法
    html晋级之路-背景、实体
    ios-晋级之路 CocoaPods的使用
    如何在Mac OS X上安装 Ruby运行环境
    html5晋级之路-学习笔记表单
    html5晋级之路-学习笔记
  • 原文地址:https://www.cnblogs.com/Yee-Q/p/13734231.html
Copyright © 2011-2022 走看看