zoukankan      html  css  js  c++  java
  • 【剑指Offer-代码的完整性】面试题16:数值的整数次方

    题目描述

    给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0,同时不需要考虑大数问题(不会溢出)。

    思路1

    因为不会溢出,可以直接使用循环相乘来求解。当指数(exponent)为整数时,直接返回结果;当指数为负数时,先将指数转为正数求解后,返回倒数,因为(a^{-b}=frac{1}{a^b})。代码如下:

    class Solution {
    public:
        double Power(double base, int exponent) {
            if(exponent==0)
                return 1;
            if(base==0.0) // base==0也行
                return 0;
            
            int absExp = exponent<0? -exponent:exponent;
            double ans = 1;
            for(int i=0; i<absExp; i++)
                ans*=base;
            
            if(exponent<0)
                return 1/ans;
            else return ans;
        }
    };
    

    思路2

    因为

    所以可以用递归来求解。代码如下:

    class Solution {
    public:
        double Power(double base, int exponent) {
            if(exponent==0)
                return 1;
            if(base==0.0) // base==0也行
                return 0;
            
            int absExp = exponent<0? -exponent:exponent;
            double ans = PowerWithAbsExp(base, absExp);
            
            if(exponent<0)
                return 1/ans;
            else return ans;
        }
        
        double PowerWithAbsExp(double base, int exponent){
            if(exponent==0)
                return 1;
            if(exponent==1)
                return base;
            
            double ans = PowerWithAbsExp(base, exponent/2);
            ans *= ans;
            if(exponent%2==1)
                ans *= base;
            return ans;
        }
    };
    

    在上面的代码中,可以用右移一位(exponent>>1)代替exponent/2,可以用exponent&1代替exponent%2==1。

  • 相关阅读:
    Linux 安装网络yum地址
    MYSQL登录错误:mysqladmin: connect to server at ‘localhost’ failed
    linux 中截取字符串
    screen 调到后台使用
    Yum 安装memcached 与缓存清空
    LAMP 环境搭建
    DELL--R420 CPU报警“CPU0000 cpu2 internal error (IERR)contact support”
    解决vim粘贴时格式混乱的问题
    DELL 管理软件安装
    windows 使用SVN命令
  • 原文地址:https://www.cnblogs.com/flix/p/12438831.html
Copyright © 2011-2022 走看看