每天一道劍指offer-牛客網數值的整數次方

  • 2019 年 10 月 4 日
  • 筆記

辣條走起,每個月的刷題99元獎勵靠大家了

前言

今天的題目 每天的題目見github(看最新的日期): https://github.com/gzc426 具體的題目可以去牛客網對應專題去找。

昨天的題解

題目

每天一道劍指offer-牛客網數值的整數次方 來源:牛客網對應專題

題目詳述

給定一個double類型的浮點數base和int類型的整數exponent。求base的exponent次方。

題目詳解

思路

  • 就是窮舉,把所有可能窮舉出來,然後對每一種情況處理。

代碼

public class Solution {      public double Power(double base, int exponent) {          if(exponent == 0)//指數如果是0          {              if(equalZero(base) == true)//底數是0則返回0                  return 0;              return 1;//除了0的任何數的0次方是1          }          if(exponent > 0)//指數大於0          {              return complex(base,exponent);//直接計算base的exponent次方返回即可          }          if(equalZero(base))//底數是0,指數小於0,因為如果指數大於0,在前面已經返回了!          {              if(base > 0)//底數是正0,那麼就是正無窮                  return Double.POSITIVE_INFINITY;              if(exponent % 2 == 0)//指數是偶數次方                  return Double.POSITIVE_INFINITY;//返回正無窮              return Double.NEGATIVE_INFINITY;//其它結果負無窮          }          return 1 / complex(base,exponent);//可以知道除了上述結果,其它都是指數是負數。比如2的-3次方,先計算2的3次方,最後求倒數。      }      double complex(double base,int exponent)      {          double result = 1.0;          if(exponent < 0)//如果指數小於0,比如2的-3次方,先計算2的3次方,然後求倒數              exponent = 0 - exponent;          for(int i=0;i<exponent;i++)              result = result * base;          return result;      }      boolean equalZero(double base)      {//判斷一個doule類型的數是不是0,必須這樣判斷,不能直接與0進行比較,因為浮點數本身不精確          if(base >0 && base < 0.00000001)              return true;          if(base < 0 && base > -0.00000001)              return true;          return false;      }  }

代碼截圖(為了避免代碼排版錯亂

Exit mobile version