2010-10-15 268 views
0

我想寫一個代碼,用斯特林公式計算一個數的近似階乘。使用斯特林的階乘公式

下面是計算它的行​​:與戰俘紅色下劃線

appFact = pow(exp, -num) * pow(num, num) * sqrt(2 * num * PI); 

的錯誤出現在POW(EXP,-num)。

IntelliSense: no instance of overloaded function "pow" matches the argument list 25 

的變量聲明爲:

float num, num2, num3, num4, MEAN, stanDev, VARI, appFact, exp; 
readFile >> num >> num2 >> num3 >> num4; 
appFact = pow(exp, -num) * pow(num, num) * sqrt(2 * num * PI); 
+0

請顯示'exp'和'num'的聲明。尤其是'exp'。如果沒有檢查過斯特林公式,那麼在第一次調用'pow'的時候,你可能會遇到'exp'和'num' - 也許你也可以提供公式? – 2010-10-15 00:47:56

+0

float num,num2,num3,num4,MEAN,stanDev,VARI,appFact,exp; readFile >> num >> num2 >> num3 >> num4; appFact = pow(exp,-num)* pow(num,num)* sqrt(2 * num * PI); 公式是e^-n * n^n * sqrt(2 * pi * n) – Evan 2010-10-15 01:54:16

+0

是的,我試圖找出e實際上是什麼 – Evan 2010-10-15 01:58:50

回答

2

嘗試,包括適當的頭文件:

#include <cmath> 

如果沒有幫助,注意,pow()實現是在std命名空間。所以:

appFact = std::pow(exp, -num) * std::pow(num, num) * std::sqrt(2 * num * PI); 
+0

同樣的問題;智能感知:沒有重載函數的實例「std :: pow」匹配參數列表26 – Evan 2010-10-15 01:17:09

+0

那麼,什麼類型的'exp'和'num'?這就是消息所指的「參數列表」。 – 2010-10-15 01:32:47

+0

如果您還沒有聲明'exp',那麼當您嘗試編譯代碼時,您會遇到編譯器錯誤。我不會依賴IntelliSense來告訴你有關編譯器錯誤的信息;一般來說,當你的代碼*已經*編譯(大部分)正確的時候,效果最好。 – 2010-10-15 01:59:14