![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 26.03.2013
Сообщений: 14
|
![]()
Задача: Для заданного одномерного массива X из N элементов найти произведение множителей, вычисляемых по формуле x[i]/(i+1). Рекурсивную функцию применять каждый раз отдельно для каждой из половин массива. Рекурсивные вызовы заканчивать, когда останется только один элемент.
Массив должен быть динамическим, элементы массива вводятся из StringGrid'а, результат вычислений тоже отображается в форме, примерный внешний вид которой - на прилагаемой картинке. Пожалуйста, гляньте код: боюсь, что по невнимательности допущена какая-нибудь глупейшая ошибка. Вычисления проводятся неверно, увеличение размеров массива вызывает переполнение стека. Иногда вылазит окно отладчика с машинными кодами и начинает ругаться на непонятном мне языке. Код:
|
![]() |
![]() |
![]() |
#2 |
Недо
Участник клуба
Регистрация: 11.08.2011
Сообщений: 1,394
|
![]() Код:
![]() Код:
С помощью программирования можно разбогатеть и изменить мир к лучшему (с) Бьерн Страуструп
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 26.03.2013
Сообщений: 14
|
![]()
Спасибо... Я, в принципе, это понимаю. Конкретный вопрос: что именно в "где-то здесь" может вызывать неверные результаты при n=2 и переполнение стека при n>=3 и n=1(!)? Дебаггер говорит, что при указанных значениях функция зацикливается.
Глаза у меня уже замыленные: умоляю, ткните носом в ошибку. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 16.05.2012
Сообщений: 3,211
|
![]() Код:
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Последний раз редактировалось Sciv; 30.03.2013 в 21:56. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 26.03.2013
Сообщений: 14
|
![]()
Эмм... Поправьте, если неправильно рассуждаю:
n - позиция UpDown1, показывает, сколько элементов в массиве. Массив динамический, элементы считаются с нуля, значит, по-русски номер последнего элемента равен n-1. Предположила, что дело в этом. Поменяла там, где Sciv указал, на n-1. Не помогло. Я туплю сейчас отчаянно, не обессудьте. |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 26.03.2013
Сообщений: 14
|
![]()
Хм, я чуть поменяла код, теперь нет проблем с зацикливанием. Но когда в ответе должна получаться единица (и не только тогда!), вылазит число 2304772. Смешно, право слово.
Код:
Код:
![]() |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 26.03.2013
Сообщений: 14
|
![]()
Отбой тревоги. Я кретин.
Код:
Если в массиве один элемент - i=1; массив-то динамический, считаем с нуля... |
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Рекурсивная функция на C++ | spam12 | Помощь студентам | 3 | 09.02.2012 16:22 |
Рекурсивная функция C++ | Buryy_Mishka | Помощь студентам | 0 | 31.05.2010 00:27 |
Рекурсивная функция | Bernuar | Помощь студентам | 2 | 06.04.2010 10:07 |
Си++. Рекурсивная функция. | Diamond2107 | Помощь студентам | 6 | 02.12.2009 19:48 |