51 / 24 / 12
Регистрация: 10.10.2015
Сообщений: 107
|
||||||
1 | ||||||
Вычисление факториала в лабораторных10.12.2015, 03:34. Показов 906. Ответов 10
Метки нет (Все метки)
2
|
10.12.2015, 03:34 | |
Ответы с готовыми решениями:
10
Неверное вычисление факториала Вычисление факториала от квадрата числа Вычисление факториала - корректировка кода Вычисление факториала с контролем ввода |
Диссидент
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
10.12.2015, 10:17 | 2 |
bsa916115, Правильный подход! Я вот, встречая повтор в вычислениях факториала, только головой качал, да языком щелкал. А теперь просто заложу эту тему в закладки и ссылаться буду.
Маленькое замечание. Случай value < old_v будет отрабатывать некорректно. Это, конечно, не часто встречается в вычислениях рядов, но для полноты картины... А если 2 факториала в разных местах? Тогода хотя бы сброс old_v, old_f предусмотреть. Хотя, Имхо, лучше правильно отрабатывать случай value < old_v. Добавлено через 16 минут bsa916115, Вот еще что в голову пришло. В тех же рядах, когда есть член вида (...)n новички его вычисляют через pow. Когда как эффективнее и проще вычислять следующий член на основе предыдущего. Ничего не говоря уж о том, что (-1)n считают через pow. Вот как бы здесь провести разъяснительную беседу...
2
|
51 / 24 / 12
Регистрация: 10.10.2015
Сообщений: 107
|
|
10.12.2015, 15:04 [ТС] | 4 |
Да, я согласен, коллеги, это именно вариант, когда следующее значение value больше предыдущего. И не для сложных решений. Это самое простое для решения лаб про ряды. Не для многопоточности.
0
|
Диссидент
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
|
||||||
10.12.2015, 16:05 | 5 | |||||
Ну, там добавить 2 строки
Да и не до того нашим новичкам! На крайняк, можно все эти вычисления вытащить из функции и считать в майне. Да дело-то и не в этом. При стандартном (новичковском) подходе для расчета 100! снова происходит умножение 100 чисел, когда 99! уже вычислен, и почти все умножения уже сделаны
0
|
11.12.2015, 13:23 | 6 | |||||
А вот, например, принципиально распараллеливаемый алгоритм, за логарифм по времени:
0
|
51 / 24 / 12
Регистрация: 10.10.2015
Сообщений: 107
|
|
11.12.2015, 13:31 [ТС] | 7 |
Уважаемые коллеги.
Я очень благодарен всем за комментарии к моему исходнику. Вы можете свободно пользоваться им, модифицировать и выкладывать под своим именем. Согласен, попсовая программа для попсовых задач. А если на несколько потоков, то я бы описал структуру из тех статических переменных, что описаны в начале. Ну фантазий у меня много
1
|
11.12.2015, 14:59 | 8 | ||||||||||
Не доходит до меня, зачем эта тема.
Допустим, надо посчитать для x=0.2 сумму от 1 до n ряда по k: Можно циклом
0
|
Диссидент
27709 / 17325 / 3811
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
11.12.2015, 15:23 | 9 |
Ваш код совершенно грамотен и верен. Но в том и дело, что большинство новичков вычисляют каждый член ряда "с нуля". Что а) неэффективно. б) неточно и чревато ошибками из-за возможно больших значений в промежуточных вычислениях. в) демонстрирует недостаточную математическую культуру кодирующего.
Вот именно борьбе с этой пагубной практикой и посвящен в основном этот топик. И, ИМХО, тема очень нужная и актуальная. А функция - дело десятое
0
|
51 / 24 / 12
Регистрация: 10.10.2015
Сообщений: 107
|
|
11.12.2015, 16:21 [ТС] | 11 |
Спасибо, Байт.
Я для себя выработал маленькую поговорку. Если ты учишь, то готовься к тому что тебя могут возненавидеть. Но ведь надо же учить. Не в тему конечно.
0
|
11.12.2015, 16:21 | |
11.12.2015, 16:21 | |
Помогаю со студенческими работами здесь
11
Вычисление факториала с помощью рекурсии Вычисление факториала числа, большего 12 Вычисление факториала без использования функций Вычисление факториала: адаптировать код под Dev C++ Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |