|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
23.05.2009, 09:10 | #1 |
Регистрация: 23.05.2009
Сообщений: 5
|
Задача на языке Pascal. Рекурсия.
Добрый День! Являюсь студентом первого курса. Для получения автомата необходимо сдать несколько задач на рекурсию. С одной из которых возникают проблемы, причину которых я, к сожалению, не могу найти самостоятельно. Задача такая: Дано натуральное число n и действительное а. Вычислить с помощью рекурсии: 1/a + 1/a(a+1) + ... + 1/a(a+1)*..*(a+n). Среда Borland Pascal for Windows.
Программа, написанная мной БЕЗ использования рекурсии работает как часы. Сверял с MathCad'ом: Код:
Вот код: Код:
Последний раз редактировалось (FainT); 23.05.2009 в 11:22. |
23.05.2009, 13:45 | #2 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
А почему у вас в варианте без рекурсии:
Код:
Нужно-то до n. Иначе у вас пропадает одно слагаемое. Тогда и ответы совпадать будут.
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
23.05.2009, 14:40 | #3 |
Регистрация: 23.05.2009
Сообщений: 5
|
2Sazary
Да, действительно, при задании конечного значения как n результаты "классического" и рекурсивного алгоритмов совпадают. Однако, почему теряется элемент? Я делал цикл до n-1 из тех соображений, что начинается он с 0, а не с 1 (для получения первого элемента ряда необходимо равенство i нулю), в этом случае количество вычисляемых элементов не нарушается! Кроме того, результаты написанного мной "классического" кода полностью совпадают с результатами вычисления в MathCAD. Рекурсивный же алгоритм врет. =/ |
23.05.2009, 14:49 | #4 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Посмотрите на ряд:
Код:
Код:
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
23.05.2009, 15:25 | #5 |
Регистрация: 23.05.2009
Сообщений: 5
|
Спасибо, теперь я убедился в собственной неправоте. Однако, как быть с несовпадением результатов вычислений? Получается, что оба алгоритма считают неправильно, и , следовательно, неверны =\
|
23.05.2009, 15:33 | #6 |
В тени
Старожил
Регистрация: 19.12.2008
Сообщений: 5,788
|
Да почему ж неверно-то?
Сейчас проверил в экселе: a = 0.5 n = 3 Ответ: 4.019 Все правильно
Вполне очевидно, чтобы что-то понять, необходимо книги читать.
Не нужно плодить бессмысленных тем. Вас Поиск избавит от многих проблем. ___________________________________ ___________________________________ _______ [=Правила форума=]_____[Поиск]_____[Литература по С++]____[Литература. Паскаль] |
23.05.2009, 15:45 | #7 |
Регистрация: 23.05.2009
Сообщений: 5
|
Да, точно. Это я неправильную сверку делал! Спасибо огромное за помощь, ошибка как всегда в мелочи
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Рекурсия - сложная задача! | RomT24 | Паскаль, Turbo Pascal, PascalABC.NET | 5 | 06.05.2009 23:14 |
Pascal.Умножние комплексных чисел.Рекурсия | starlet | Помощь студентам | 9 | 19.04.2009 18:36 |
Рекурсия Pascal | HoLToFF | Помощь студентам | 3 | 31.03.2009 22:25 |
Pascal: Рекурсия | MaGWaY_minsk | Помощь студентам | 2 | 19.02.2009 09:46 |
Pascal. рекурсия. | TOSAgrk | Помощь студентам | 2 | 04.02.2009 12:05 |