【剑指offer - C++/Java】12、数值的整数次方
生活随笔
收集整理的這篇文章主要介紹了
【剑指offer - C++/Java】12、数值的整数次方
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
在線題目鏈接:數值的整數次方
文章目錄
- 1 題目描述
- 2 題目分析
- 2.1 方法1 循環
- 2.11 Java代碼
- 2.12 C++代碼
- 2.2 方法2 遞歸
- 2.21 Java代碼
- 2.22 C++代碼
- 3 總結
1 題目描述
給定一個double類型的浮點數base和int類型的整數exponent。求base的exponent次方。
2 題目分析
2.1 方法1 循環
常規做法是直接寫一個循環,讓exponent個base相乘即可。這里我們主要要注意的是exponent可能小于0。所以要考慮這種情況,代碼還是很好寫的:
2.11 Java代碼
public class Solution {public double Power(double base, int exponent) {//非遞歸解法if(exponent==0)return 1;if(exponent<0)return 1/Power2(base,-exponent);//exponent小于0時double ret=1;for(int i=1;i<=exponent;i++)ret*=base;return ret;}double Power2(double base, int exponent){double ret=1;for(int i=1;i<=exponent;i++){ret*=base;}return ret;} }2.12 C++代碼
class Solution { public:double Power(double base, int exponent) {//非遞歸解法if(exponent==0)return 1;//int absExponent=abs(exponent);if(exponent<0)return 1/Power2(base,-exponent);double ret = 1;for(int i=1;i<=exponent;i++)ret*=base;return ret;}//這個函數的exponent參數時正的double Power2(double base, unsigned int exponent){double ret = 1;for(int i=1;i<=exponent;i++)ret*=base;return ret;} };2.2 方法2 遞歸
對于以下公式,我們肯定是非常熟悉的:
這種公式我們已經很常見了,可以利用遞歸來求解。只需要注意n的奇偶性即可。
2.21 Java代碼
public class Solution {public double Power(double base, int exponent) {//遞歸解法if(exponent==0)return 1;else if(exponent >0){if((exponent&0x1)==1)return base*Power(base,(exponent-1)>>1)*Power(base,(exponent-1)>>1);else return Power(base,exponent>>1)*Power(base,exponent>>1);}else {return (double)1/Power(base,-exponent);}} }2.22 C++代碼
class Solution { public:double Power(double base, int exponent) {//遞歸解法if(exponent==0)return 1;else if(exponent >0){if(exponent & 0x1)return base*Power(base,(exponent-1)>>1)*Power(base,(exponent-1)>>1);else return Power(base,exponent>>1)*Power(base,exponent>>1);}else {return (double)1/Power(base,-exponent);}} };3 總結
主要是注意輸入數據的所有的可能性,比如上面的exponent的值有可能是小于0的數,所以要考慮問題全面、
探討學習加:
個人qq:1126137994
個人微信:liu1126137994
總結
以上是生活随笔為你收集整理的【剑指offer - C++/Java】12、数值的整数次方的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 内存颗粒位宽和容量_SDRAM的逻辑Ba
- 下一篇: 第 1 课:KNX 与 Arduino: