整数電力値:安全プラン13を証明します

タイトル説明

ダブル基本型と浮動小数点型int型の整数の指数を考えます。パワーベースの指数を求めて。
ベースと指数が同時にではないことを確認0
 

分析

主として、入力データの整合性を推定する能力に、浮動小数点数の整数パワーを算出します。この問題を解決するために、入力データがあれば存在することがあります。

1.ベース番号は整数インデックス、ゼロではありません

2.塩基数は、インデックスが負で、0ではありません

3.ベース番号が0で、インデックスが負である(ゼロ状況)

4.塩基数は、インデックスが正の数(指定された特別な値0または1)であり、0であります

実装ロジックコードは、すべての可能な入力の場合を検討する一次必要が複雑ではなく、また、浮動小数点数のために、直接的に「==」を直接比較する2つの数値を使用していないことに留意すること。

C ++コードの実現は、以下の通りであります:

クラス解決{
 パブリックダブルパワー(ダブル ベースint型の指数){ // 排除零除的情况出现
        場合(STD :: ABS(ベース - 0.0)<(1E- 4)&&指数< 0 ){ 戻り 0.0 
        } 
        BOOL isnegative =(指数< 0)?;
        場合(isnegative){
           戻り 1.0 / calc_power(ベース、 - 指数)。  
        } 
        {
             戻り calc_power(ベース、指数)。  
        } 
    } 
    ダブル calc_power(ダブル ベースINT unsignedexp){
         ダブル RES = 1.0 以下のためにint型 i = 0 ; iはunsignedexp <I ++は{)
            RES * = 塩基; 
        } 
        戻りRESと、
    } 
     }。

 あなたはO(N)から、以下の再帰的な方法で、減少時間計算量O(LOGN)を使用して実装することができ、計算効率のcalc_power機能を改善したいのですが、再帰スタック領域の複雑さがOになった場合(LOGN)

二重 calc_power(ダブル ベースINT unsignedexp){
         // ログ(N)時間計算量は、再帰の同じ深さであるログ(N-)
        IF(unsignedexp == 0 ){
             返す 1.0 ; 
        } 
        IF(unsignedexp == 1 ){
             リターン ベース; 
        } 
        ダブル結果= calc_power(ベース unsignedexp、>> 1。); 
        結果は、 * = 結果、
         IF((unsignedexp&0x1の)== 1 ){ 
            結果* = ベース
        } 
        戻り値の結果; 
    }

 

おすすめ

転載: www.cnblogs.com/fancy-li/p/11613810.html