|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
25.06.2010, 11:34 | #1 |
Пользователь
Регистрация: 12.03.2010
Сообщений: 18
|
Рекурсия в Delphi!
Помогите найти ошибку в программе!
Вот задание: Написать рекурсивную программу вычисления суммы N первых членов арифметической прогрессии. А вот моя программа: Код:
Она работает, только считает через раз правильно!!! Я думаю, может где выделено там ошибка какая-то? Подскажите... Последний раз редактировалось Stilet; 25.06.2010 в 11:50. |
25.06.2010, 11:54 | #2 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
По-моему достаточно Else progress:=a1+progress(x-1)
I'm learning to live...
|
25.06.2010, 14:14 | #3 |
Пользователь
Регистрация: 12.03.2010
Сообщений: 18
|
Нет, так она вообще выдает результат, далекий от правильного ....
|
25.06.2010, 14:38 | #4 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Я кнечно не силен в матике-матике, но предполагаю что тебе нужно вот что-то:
Код:
I'm learning to live...
|
25.06.2010, 14:57 | #5 |
Пользователь
Регистрация: 12.03.2010
Сообщений: 18
|
То есть я должен вставить эту функцию в свою программу?
Я попробовал изменить => куча ошибок.... Объясните как |
25.06.2010, 15:25 | #6 |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Ну вот у тебя есть function progress(x:word):extended;
Меняешь ее на function TForm1.prog(a,n,d:integer):integer; И в коде Код:
I'm learning to live...
|
25.06.2010, 22:15 | #7 |
Форумчанин
Регистрация: 11.08.2009
Сообщений: 433
|
Не будет правильно считать.
Причина: на каждом шаге прогрессии будет добавляться величина a, которая, как я понимаю, должна являться первым элементом прогрессии. Решение: при n=1 присвоить величину, равную первому элементу прогрессии. Результатом работы функции может быть текущий элемент. А сумма должна передаваться в качестве параметра. Код получится вот такой: Код:
Вот самый первый код по идее должен быть рабочим, если написать вот так: Код:
Последний раз редактировалось mMAg; 25.06.2010 в 22:24. |
26.06.2010, 08:58 | #8 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Anton5,
формулу прогрессии приведите, пожалуйста! p.s. И ещё, когда речь идёт о том, что работает, но неправильно считает, хорошим тоном было бы сообщить исходные данные и полученный Вами результат. А иначе — всё что угодно может быть. Может Вы в расчётах ошибаетесь.. Или очередной член прогрессии неверно подсчитываете! |
26.06.2010, 14:50 | #9 |
Форумчанин
Регистрация: 11.08.2009
Сообщений: 433
|
Да он, наверно, уже исправил и вряд ли в скором времени появится.
Арифметические прогрессии все в школе учили, в классе эдак 6-7. Вот формула для нахождения n-ного члена: a(n) = a(n-1) + d;откуда легко находится, что: a(n) = a(0) + d*n; a(0) и d должны быть заранее известны. Обозначения, насколько я знаю, общепринятые. Хотя... мало ли чего там могут преподаватели на уроках или парах начитать. |
26.06.2010, 15:06 | #10 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
mMAg, спасибо за ответ.
я проглядел слово "арифметическая"... Цитата:
ну тогда Ваш пример код выше неверен Решение будет выглядеть как-то так: Код:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Рекурсия | DrDre9991 | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 22.05.2010 15:00 |
Рекурсия в Delphi | Ericnex | Помощь студентам | 2 | 05.05.2010 19:34 |
Delphi, рекурсия, как сделать все возможные N-ки чисел (сколько столбцов такая N-ка,в данном случае 3)? | domik | Помощь студентам | 5 | 26.09.2007 16:43 |