0 / 0 / 0
Регистрация: 26.10.2017
Сообщений: 11
|
||||||
1 | ||||||
Рекурсивная функция для вычисления суммы ряда14.12.2017, 22:43. Показов 5705. Ответов 8
Метки нет (Все метки)
помогите вычислить сумму с использованием рекурсивной функции. Программу написал, но сумму она не считает, а просто выдает все члены последовательности, а надо бы их сложить. вот формула:
S=1+x/1!+x^2/2!+ x^3/3!+...+x^n/n!
0
|
14.12.2017, 22:43 | |
Ответы с готовыми решениями:
8
Рекурсивная функция вычисления суммы знакопеременного ряда Рекурсивная функция вычисления суммы бесконечного ряда Рекурсивная функция для нахождения суммы ряда Рекурсивная функция для вычисления суммы элементов арифметической прогрессии |
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
|
||||||
15.12.2017, 22:54 | 2 | |||||
laku, здравствуйте! Я сделал так:
1
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
15.12.2017, 23:26 | 3 |
Сообщение было отмечено Kuzia domovenok как решение
Решение
Fixer_84, Возможно, ваш код и будет работать при небольших n. И будет много-много раз вычислять уже многократно вычисленное. Но ведь есть на свете какой-то языческий Бог или хотя бы Муза Алгоритмов! Я думаю, ваш код их чрезвычайно расстраивает
1
|
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
|
|
15.12.2017, 23:30 | 4 |
Байт, здравствуйте! Спасибо за ваше замечание. Лучше ничего придумать не смог. Рекурсией пока плохо владею.
0
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
16.12.2017, 00:46 | 5 |
Понимаете, это тот случай, когда рекурсия и на фиг не нужна. Просто каждый очередной член получается из предыдущего парой простых действий - умножением и делением. Реализовать все это можно и рекурсией. Давным давно доказано, что все, что можно в цикле, можно сделать и рекурсией. И наоборот. Но вот посмотрите. Вам нужно посчитать несколько факториалов, идущих подряд. И вы уже посчитали 20! А теперь вам нужен 21! И вы снова считаете все 20 сомножителей + еще один. А к чему эти усилия? ведь 21! = 21*20! А последний уже посчитан только что.
Я тут даже не говорю о переполнении представления и прочих заморочках машинной арифметики. В конце концов для любого, самого изощренного алгоритма можно придумать (в той же задаче) такие входные данные, что ваш алгоритм лопнет. Просто не хватит никаких ресурсов. Но наш долг - всеми силами увеличивать диапазон решаемых задач. Отдавая себе отчет, что в борьбе с бесконечностью мы все равно проиграем.
0
|
16.12.2017, 07:38 | 6 |
Байт, иногда мне кажется, что надо бить с вертушки в челюсть тем преподам, которые приводят в качестве примера рекурсии вычисление факториала. Прям в момент когда они рот у доски раскрывают бить. Тогда множественныне сложные переломы челюсти со смещениями получаются.
Потому что судя по форуму, уже целое поколение студентов просто не знают другого способа вычислить факториал, кроме как рекурсией! Или надеюсь слава богу знают аналогичный цикл, но считают рекурсию наиболее естественным алгоритмом для задачи вычисления факториала. Спрашивается. Ну почему, чёрт возьми! Да, рекурсия - одна из главных тем, которые проходят в академическом курсе... но так для её демонстрации есть 100500 примеров гораздо более естественной рекурсивности алгоритма! Те же Ханойские башни, быстрая сортировка, бинарный поиск, чего-нибудь фрактальное... зачем учить считать факториалы рекурсией?
1
|
0 / 0 / 0
Регистрация: 26.10.2017
Сообщений: 11
|
|
16.12.2017, 11:31 [ТС] | 7 |
Большое спасибо, а в 18 строке плюс икс в степени эн или умножить?
Добавлено через 7 минут Здравствуйте. Большое спасибо. Да, действительно, можно и без рекурсии. Но без нее мы уже писали)). Эту же зависимость. Скажите, а в 18 строке плюс или умножить?
0
|
Диссидент
27706 / 17322 / 3812
Регистрация: 24.12.2010
Сообщений: 38,979
|
|
16.12.2017, 11:47 | 8 |
Kuzia domovenok, при полном согласии с вашими словами попытаюсь найти объяснение (но не оправдание!) этого феномена. Видимо, так устроен человеческий мозг, если его не развивать. Вот видит человек формулу, и все, больше не видит ничего. Видит факториал (а рекурсивное определение его - вещь наиболее естественная) - давай рекурсивно его считать,
видит (-1)n, и ничего кроме pow(-1, n) в голову не приходит. Найти какое-то там число из 8 цифр - тут же цикл for(i=10000000; i<=99999999; i++) А преподы - они такие же люди. Но продемонстрировать рекурсию на факториале - соблазн велик. Уж больно это просто, а для первой демонстрации понятия простота просто необходима. Но я бы погодил сходу бить из вертушки в челюсть. Ибо честный препод, после демонстрации рекурсивного кода должен сказать - "Дети! Никогда так не делайте! А делайте вот так!..." и перейти к Ханойским башням Добавлено через 3 минуты Так как уважаемогоFixer_84 в данный момент на форуме нет, рискну ответить за него. Конечно, плюс.
2
|
1505 / 968 / 812
Регистрация: 30.04.2016
Сообщений: 3,334
|
||||||
16.12.2017, 15:46 | 9 | |||||
laku, вот вариант без рекурсии:
1
|
16.12.2017, 15:46 | |
16.12.2017, 15:46 | |
Помогаю со студенческими работами здесь
9
Рекурсивная функция суммы ряда Функция вычисления суммы ряда для заданного аргумента Функция для вычисления суммы члена ряда. Не могу найти ошибку Функция вычисления суммы ряда ln(x) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |