Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > C/C++: Для новичков > Помогите написать рекурсивную функцию |
Автор: qw1mb0 1.4.2012, 23:39 | ||
Добрый день форумчане. Появилась необходимость в написании рекурсивной функции, но если честно не представляю как это сделать: Вот задание: http://s2.ipicture.ru/ При каждом вызове функции она должна возращать следующее приближение к sin x. Накидал примерно такое:
Но как выйти из рекурсии не представляю... Кто может помогите пожалуйста |
Автор: alexvs11 1.4.2012, 23:58 | ||
както так |
Автор: qw1mb0 2.4.2012, 00:05 |
Честно говоря с математикой я совсем не дружу да и с программированием не очень ![]() Но мне казалось, что при каждой итерации функция должна стремится к sin x, не так ли? Может это не понимание из-за непонимания кода, но код вроде как рабочий и почему надо отрицательное число передавать? |
Автор: alexvs11 2.4.2012, 00:09 |
qw1mb0, я подправил, теперь стремится ![]() не сразу вспомнил, что это за ряд а синусу без разницы какое число передавать |
Автор: qw1mb0 2.4.2012, 00:12 | ||||||
alexvs11,
Можно ведь вместо (2.0*n*(2*n+1)) использовать рекурсивную функцию факториала с аргументом n ?
Добавлено через 3 минуты и 3 секунды Хм. Попробывал, понял что, что-то не то. Не могли бы вы обьяснить строку:
|
Автор: alexvs11 2.4.2012, 00:21 |
qw1mb0, вычислять каждый раз факториал не имеет смысла поясню [n = 1] x / 1!, обозначим его prev0 [n = 2] (-1) * x^3 / 3! = -1 * x^2 / (2*3) * prev0 = - 1 * x^2 * (2*n * (2*n - 1)), обозначим как prev1 [n = 3] x^5 / 5! = - x^2 / (4 * 5) * prev1 = - x^2 / (2*n * (2*n - 1)) * prev1 |
Автор: qw1mb0 2.4.2012, 00:28 |
А еще возник вопрос, это наверное более математический почему при выводы функции с аргуменатми f(1) = 0.841471 f(2) = 0.909297 f(3) = 0.141120 f(4) = -0.756802 Или же про, что можно почитать, что бы данные вычисления были более ясны? |
Автор: alexvs11 2.4.2012, 00:31 |
qw1mb0, что именно неясно? |
Автор: qw1mb0 2.4.2012, 00:33 |
Почему такие значения ![]() |
Автор: alexvs11 2.4.2012, 00:38 |
это значение синуса в радианной мере f(0) = 0, f(3.14) примерно равна нулю, f(1.57) около 1цы сам по себе метод вычисления - это разложение в ряд тейлора синуса (в данном случае в ряд маклорена) |
Автор: qw1mb0 2.4.2012, 00:39 |
Спасибо большое, теперь стало на порядок яснее. Примного благодарен, еще почитаю о рядах. |