演算法學習記錄十(C++)--->數值的整數次方
描述
- 給定一個double型別的浮點數base和int型別的整數exponent。求base的exponent次方。
分析
1.普通方法,幾次方就是乘以幾次
2.位運算解法
普通解法
class Solution {
public:
double Power(double base, int exponent) {
double ret = 1;
if(exponent == 0){
return 1.0f;
}
else if(exponent < 0){
while(exponent!=0){
ret /= base;
exponent++;
}
}
else{
while(exponent!=0){
ret *= base;
exponent--;
}
}
return ret;
}
};
位運算
- 1.全面考察指數的正負、底數是否為零等情況。
- 2.寫出指數的二進位制表達,例如11表達為二進位制1011。
- 3.舉例:10^1011 = 10^0001*10^0010*10^1000。
- 4.通過&1和>>1來逐位讀取1011,為1時將該位代表的乘數累乘ret到最終結果。 每位移一次都要翻倍
class Solution {
public:
double Power(double base, int exponent) {
double ret = 1.0f; // 初始
double cur = base;
int ex = 0;
if(exponent==0){
return 1.0f;
}
else if(exponent>0){
ex = exponent;
}
else{
// 負數的時候分母要處理下
if(base==0){};
ex = -exponent;
}
// 指數位運算向右移動,不等於0的時候累乘
while(ex){
// 位運算中遇到1代表一次累乘
// 3.舉例:10^1011 = 10^0001*10^0010*10^1000。
if((ex&1)==1){
ret *= cur;
}
// 每次位移都要翻倍10^0,10^1,10^2,10^4,10^8
cur *= cur;
// 這裡一定要重新給ex賦值,不然死迴圈了
// ex>>1這樣的話ex不會變的,沒注意,會死迴圈
ex>>=1;
}
return exponent>0?ret:1/ret;
}
};
相關文章
- 【演算法詳解】求解數值的整數次方演算法
- 劍指offer面試題11 數值的整數次方面試題
- 演算法學習記錄十一(C++)--->調整陣列順序使奇數前偶數後演算法C++陣列
- 【leetcode】劍指 Offer 16. 數值的整數次方LeetCode
- 數值得整數次方--模擬pow函式的功能函式
- 演算法學習記錄九(C++)--->二進位制中1的個數演算法C++
- JavaScript學習筆記---數值JavaScript筆記
- 演算法學習-第一個缺失的正整數演算法
- 演算法學習記錄六(C++)--->獲取斐波那契數列第n項演算法C++
- c++學習記錄C++
- ES6系列入門學習記錄:變數的解構賦值變數賦值
- 演算法學習記錄02-判斷輸入數字是不是質數演算法
- 變數與常量 - Go 學習記錄變數Go
- MATLAB學習筆記:數值積分Matlab筆記
- MYSQL學習筆記15: 數值函式MySql筆記函式
- C++學習記錄1C++
- 演算法學習筆記(40): 具體數學演算法筆記
- Swift學習筆記(三十一)——引數的預設值Swift筆記
- 記錄:演算法題數學知識總結演算法
- 演算法學習記錄二(C++)--->字串空格替換演算法C++字串
- 演算法學習記錄十四(C++)--->二叉樹的映象演算法C++二叉樹
- 「學習記錄」《數值分析》第二章計算實習題(Python語言)Python
- 【學習筆記】數學筆記
- ES6學習筆記(二)【數值,陣列】筆記陣列
- 「分數規劃」學習筆記及做題記錄筆記
- 演算法學習記錄三(C++)--->從尾到頭列印連結串列每個節點的值演算法C++
- 「學習記錄」《數值分析》第三章計算實習題(Python語言)Python
- MySql先分組統計總記錄數,再獲取記錄數中的最大值MySql
- C++列舉演算法之滿足條件的整數C++演算法
- day 1 c++小白學習記錄C++
- c++學習漸進數目C++
- 透過交換指標變數的值改變大小數字的位置-學習筆記指標變數筆記
- 演算法學習筆記(21):數論分塊演算法筆記
- 演算法學習筆記(16): 組合數學基礎演算法筆記
- [MatLab]學習筆記2:MatLab數值資料Matlab筆記
- c++ 字元 數值拼接C++字元
- 運籌學-整數規劃IP演算法演算法
- 數論學習筆記 (2):質數筆記