看板 C_and_CPP 關於我們 聯絡資訊
※ [本文轉錄自 Programming 看板 #1DlJTBzo ] 作者: tropical72 (藍影) 站內: Programming 標題: [問題] recursive Eule 時間: Sun May 1 18:34:48 2011 e = 1/1!+1/2!+...+1/n! 欲以一個 recursive 解之 目前必須用到的是 recursive_sum + recursive_fact, 試著化簡該公式: e = 1/1 + 1/1*1/2 + 1/1 * 1/2 * 1/3 + ... = 1* (1+1/2* (1+1/3* ....(1+1/n))))) 這麼做請問 recursive function 該如何撰? (in c or c++ is better) 或能給我一份通式嗎? 謝謝各位不吝指教! ---- 分隔線 ---- my try --- double f(int x) { return (x==0 || x==1) ? 1 : ( (1.0/n+1)*f(x-1) ); } 我知道這份是有問題的,展開會變成 (1/4+1)*(1/3+1)*(1/2+1)*1 不過想不透該如何改 -- YouLoveMe() ? LetItBe() : LetMeFree(); -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.73.222 ※ 編輯: tropical72 來自: 180.177.73.222 (05/01 18:38) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.177.73.222
TsinTa:f(n)=f(n-1)+1/n! <---是這樣嗎?還是要用你化簡的式子? 05/01 19:01
bleed1979:如果是2個recursive,我可以幫你。 05/01 19:03
bleed1979:http://codepad.org/klyb8ZxS 05/01 19:04
bleed1979:http://pastie.org/1853074 05/01 19:04
bleed1979:有點作弊的寫法如下,一個recursive。 05/01 19:19
bleed1979:http://codepad.org/fCx0Hoy6 05/01 19:20
先謝謝樓上二位的建議, e 我不是不會求, 大多求法都避不開另寫一個階層函式, 但發問重點是想借這題去探討另一 recursive 問題 double euler2(int x) { double ans=1.0/x; while(x) ans = (ans+1)/x, --x; return ans+1; } 這是 non-recursive 版的,我比較好奇是 recursive how to ? 看過 bleed1979 給的 http://codepad.org/fCx0Hoy6 應是我想要的 我再研究一下是否有辦法變成單變數 recursive , 謝謝各位! ※ 編輯: tropical72 來自: 180.177.73.222 (05/01 19:43)
tropical72:補上,bleed1979 第三個 link 似乎有些誤. 05/01 19:47
firejox:假如你要避開階乘 可以用連分數去做~~ 05/01 20:03
tropical72:@firefox: 我想我提出的 subfunc 就是連分數 05/01 20:07
firejox:http://codepad.org/Nlsi52T7 05/01 20:16
bleed1979:原po給的公式是否少1? 05/01 20:24
bleed1979:e^x =1+x+x^2/2!+x^3/3!+x^3/3!+x^n/n! x代1 05/01 20:31
firejox:另一種 http://codepad.org/2K0jDqS7 05/01 20:48
firejox:這是用 e^x=1+x+x^2/2!+...+x^n/n! 導的... 05/01 20:54