Re: [問題] 寫 1+1/2+1/3....+1/n=

看板C_and_CPP作者 (tad)時間13年前 (2012/05/07 02:10), 編輯推噓3(309)
留言12則, 6人參與, 最新討論串2/2 (看更多)
※ 引述《jason12308 (jason12308)》之銘言: : ( *[1m *[m 為色碼,可以按 Ctrl+V 預覽會顯示的顏色 ) : ( 未必需要依照此格式,文章條理清楚即可 ) 問一下,我這樣寫應該是沒有寫錯吧? 因為我按照答案給的 n 輸入10 去看總數 發現解答的 數質只有2.718 可是我跑出來有 2.929 但是我看來看去又覺得我應該沒錯 所以想問一下是不是哪邊有問題?? float sum=0.0; int i,n; printf("Please input a number n :"); scanf("%d",&n); for(i=1;i<=n;i++) { sum=sum+1.0/i; } printf("1+1/2+1/3+...+1/n 的總和 = %.4f",sum); : 遇到的問題: (題意請描述清楚) : 小弟打了一些…想說從簡單的1+1/2+1/3+1/4+1/5就可以往後推了,但就是打不出來耶 : 希望得到的正確結果: : 算出來是2.8x : 程式跑出來的錯誤結果: : 但程式只會跑出 1? : 開發平台: (例: VC++ or gcc/g++ or Dev-C++, Windows or Linux) : Dev-C++ : 有問題的code: (請善用置底文標色功能) : int sum=0; : for (int a=1; a<=5;a++) : { : sum=sum+1/a; : } : cout <<sum << endl; : 補充說明: : 打了1個多小時…居然生不出半點東西來…快瘋了(新手… -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.36.103.170

05/07 02:24, , 1F
我直接用計算機算也是你的答案
05/07 02:24, 1F

05/07 02:26, , 2F
如果從答案看,原題目應該是要逼近 e 的值
05/07 02:26, 2F

05/07 02:27, , 3F
所以算式應該是 sum(1/(n!)) n = 0~無限大
05/07 02:27, 3F

05/07 11:19, , 4F
印象中會有float進位的問題,預設好像是6(包含.)
05/07 11:19, 4F

05/07 12:47, , 5F
http://codepad.org/5LeuQxE5 追蹤起來好像沒錯0.0/
05/07 12:47, 5F

05/07 20:46, , 6F
不對啊 逼近e的是 1/1! + 1/2! + 1/3! + 1/4! + ...
05/07 20:46, 6F

05/07 20:46, , 7F
Σ1/n 的話這沒錯
05/07 20:46, 7F

05/07 22:09, , 8F
1+1/2+1/3+...+1/n是發散 分母有!才是逼近e
05/07 22:09, 8F

05/07 23:47, , 9F
∫ln(x) dx = Σ1/n , 應非發散數列。
05/07 23:47, 9F

05/07 23:49, , 10F
寫錯,是 ln(x) = ∫1/n dn , nε[1,x]
05/07 23:49, 10F

05/08 00:12, , 11F
ln(∞)也是∞啊
05/08 00:12, 11F

05/08 00:24, , 12F
嗯, 是我推錯了, 謝謝 b 大指正。
05/08 00:24, 12F
文章代碼(AID): #1FfhwKPs (C_and_CPP)
文章代碼(AID): #1FfhwKPs (C_and_CPP)