:: 게시판
:: 이전 게시판
|
이전 질문 게시판은 새 글 쓰기를 막았습니다. [질문 게시판]을 이용바랍니다.
통합규정 1.3 이용안내 인용"Pgr은 '명문화된 삭제규정'이 반드시 필요하지 않은 분을 환영합니다.법 없이도 사는 사람, 남에게 상처를 주지 않으면서 같이 이야기 나눌 수 있는 분이면 좋겠습니다."
08/09/09 01:58
double Euler( int n, double e )
double eDelta = 1 / nFactorial( n ); double eRet = e + eDelta; if ( eDelta < 0.0000001 ) return eRet; else Euler( n + 1, eRet ); main(...) ... double e = Euler( 1, 0 ); ... 일감으로는 이렇게 하면 될 듯 한데요, 직접 돌려본게 아니라서.. 확실하진 않습니다. (죄송합니다 꾸벅~ ( __) )
08/09/09 02:15
일단 오일러 급수가 뭔지가 기억이 나지 않아 알고리즘과 Class를 설계하는 것에는 도움을 드리기 어렵지만...
!를 재귀함수로 만드는 것이 핵심 포인트 같다는 생각이 드네요... 그런데... ! 이.... 더하기 였던가... 곱하기 였던가..... 바보가 되어 가나요.... 암튼.... !을 리커시브로 만들면 나머지는 쉽게 풀릴것 같다는 막연한 생각이 드네요.... 프로그램 문제이고 수학문제가 아니기 때문에...
08/09/09 02:26
AhnGoon님// 저도 그걸 보고... 내가 무슨 말을 했던가 했습니다.... 사실 코드도 보지 않고 대답을 했었죠.... 말한 후 오일러 급수가 뭐였는지 코드를 보며 생각을 해냈습니다. ^^;;;
08/09/09 02:30
lovehis님// 아하하.. 뭐, 남의 코드라는게 꼼꼼히 살피지 않으면 뭐가 있는지 파악하기가 쉽지 않은게 당연하죠 ^^;
그리고, 제가 올린 코드도... EZrock님이 막상 써먹을라면 애좀 먹을거에요. 보아하니 학부생이신거 같은데. 원래 C++ 코드가 익숙해지기 전까지는 무지막지하게 빡세죠. 크크크.. ^^;;
08/09/09 07:27
e_k = 1+1/1!+1/2!+1/3!+....+1/k!
e_(k+1) = 1+1/1!+1/2!+1/3!+....+1/k! + 1/(k+1)! 라고 하면 e_k*(k+1)! +1 = e_(k+1)*(k+1)! 인걸 이용해서 프로그램을 좀 바꿔봤습니다. ^^ #include <iostream> const double min_fraction = 0.0000001; const unsigned rev_min_fraction = (unsigned)(1/min_fraction); void get_euler_fraction(unsigned &numerator, unsigned &denominator, unsigned n) if ( denominator*n < rev_min_fraction ) { numerator = numerator*n + 1; denominator *= n; get_euler_fraction( numerator, denominator, n+1 ); } double get_euler() unsigned numerator = 1; unsigned denominator = 1; get_euler_fraction(numerator, denominator, 1); return ((double)numerator)/denominator; int main() std::cout << "result is: " << get_euler() << std::endl; return 0; 개인적인 의견으로는 EZrock은 아직 알고리즘에 고민하기 보다는 우선 C++에 익숙해지시는걸 생각하는게 나을거 같습니다. ^^ 웬지 C++이라서 class를 코드에서 사용하려고 좀 무리해서 집어넣고 계신것 같은데, 굳이 필요하지 않은 곳에 class를 쓴다고 해서 C++ 코드가 되는건 아닙니다. 오일러 함수를 구하는데 굳이 class를 사용할 필요는 없죠.
|