Re: [問題] 算尤拉數但是我不知道我錯在哪= =

看板C_and_CPP (C/C++)作者 (^^"....)時間14年前 (2010/05/05 01:33), 編輯推噓3(305)
留言8則, 4人參與, 最新討論串2/2 (看更多)
※ 引述《owem0410 (花蓮閒學生)》之銘言: : ( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) : ( 未必需要依照此格式,文章條理清楚即可 ) : 遇到的問題: (題意請描述清楚) : 執行直接出現當機 : 希望得到的正確結果: : 尤拉數值2.71818....... : 程式跑出來的錯誤結果: : 沒有所以在苦惱= = : 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) : Dev-C++ ,windows : 有問題的code: (請善用置底文標色功能) : 補充說明: : #include <stdlib.h> : #include <stdio.h> : int function(int); : int main() : { : int a,x; : double e=0; : for(x=0;x<=1000;x++) : { : a=function(x); : e+=(1/a); ^^^^^^^^^ 這邊也該改成1.0 不然會變成int/int的運算 也就是小數點下會無條件捨去 會輸出 1.#INF00 是因為int overflow的關係 (見下面) : } : printf("%lf\n",e); : system("PAUSE"); : return 0; : } : int function(int x) : { : int total_1=1,total_2=0,a; : if (x==0) : {return 1;} : else if(x==1) : {return 1;} : else : {for(a=1;a<=x;a++) : total_1=total_1*a; ^^^^^^^^^^^^^^^^^^ 這邊是在算x! 而你x最大會到1000 int是裝不下 1000!的哦! : total_2+=total_1; : return total_2; : } : } : 因為是新手所以有違板規跟我說一下我自刪 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 111.254.168.141 ※ 編輯: lagerway 來自: 111.254.168.141 (05/05 01:35)

05/05 01:36, , 1F
所以說大大是要改成float?還是說?
05/05 01:36, 1F

05/05 01:36, , 2F
原po不用算那麼多項, 因為10項以後都很小, 根本不太
05/05 01:36, 2F

05/05 01:37, , 3F
需要
05/05 01:37, 3F

05/05 01:37, , 4F
喔喔我在試試看謝謝大家!!!
05/05 01:37, 4F

05/05 01:41, , 5F
謝謝各位大大算出來了
05/05 01:41, 5F

05/05 01:43, , 6F
我想加問一個問題 一般標準函式庫中的EXP也是用展開的
05/05 01:43, 6F

05/05 01:43, , 7F
方式實作嗎?
05/05 01:43, 7F

05/05 02:00, , 8F
有的是 有的則是直接用 x86 FPU 的浮點數運算指令
05/05 02:00, 8F
文章代碼(AID): #1Bu5fcNy (C_and_CPP)
文章代碼(AID): #1Bu5fcNy (C_and_CPP)