2010-12-13 220 views
1

我必須編寫一個算法,用一個整數或浮點型參數中的一個基數(整數或浮點數)進行指數運算。我寫這個算法洪水(zoho.com),但它只能使用整數指數:浮點型指數運算法則

float math.potencia(float base, int expoente) 
{ 
    if(expoente>0) 
    { 
    base = base * thisapp.math.potencia(base, (input.expoente - 1)); 
    } 
    else if (expoente == 0) 
    { 
    base = 1; 
    } 
    return base; 
} 

(洪水不具有增強運算符或函數)。謝謝!

回答

1

好,超過17小時,而沒有回覆,終於我找到了答案,以我自己的問題:

在最簡單的方式,我們可以使用「e」的乘冪的價值解決問題其中數字是被開方和索引是所希望的根

E 1(日誌(數)/索引)

:由索引除以數的對數。

例如:數量1024的第十根: E 1(登錄(1024)/ 10)= 2

PS:日誌功能的基礎也是 「E」。 「e」的四捨五入值是:2.718281828459045

我希望這種技術可能對您有用。

+0

你沒有得到回覆,因爲你的問題被標記不良。 – skaffman 2010-12-14 12:47:13

+0

我想如果你吸收我另一個標籤。對於我的分數,我不會創造新的。 – Alex 2010-12-23 10:28:12

3

假設你可以使用開方,您可以使用下面的算法:

double EPS = 0.0001; 

double exponentiation(double base, double exp){ 
    if(exp >= 1){ 
    double temp = exponentiation(base, exp/2); 
    return temp * temp; 
    } else{ 
    double low = 0; 
    double high = 1.0; 

    double sqr = sqrt(base); 
    double acc = sqr;  
    double mid = high/2; 

    while(abs(mid - exp) > EPS){ 
     sqr = sqrt(sqr); 

     if (mid <= exp) { 
      low = mid; 
      acc *= sqr; 
     } else{ 
      high = mid; 
      acc *= (1/sqr); 
     } 

     mid = (low + high)/2; 
    } 

    return acc; 
    } 
}