|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
29.11.2015, 00:53 | #1 |
Регистрация: 29.11.2015
Сообщений: 4
|
Рекурсия в Pascal
Разработать программу по алгоритму с использованием рекурсивной функции и без использования рекурсивной функции.
Программа с использованием: Код:
Ошибка "StackOverflowException: Программа завершена из-за переполнения программного стека" Условие: Последний раз редактировалось BDA; 29.11.2015 в 01:44. |
29.11.2015, 01:49 | #2 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
1) Для оформления кода используйте кнопочку # (Решетка), расположенную над полем ввода текста.
2) Определитесь, за что у вас отвечает параметр функции Rekurs. 3) Зачем вам нужен цикл, если нужно организовать рекурсию? Например, печать всех чисел от n до 1: Код:
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
29.11.2015, 01:49 | #3 |
Форумчанин
Регистрация: 15.05.2011
Сообщений: 160
|
Код:
Это наверняка списанная у кого-то программа. Спрашивать бесполезно, если человек хочет действительно разобраться, он сам напишет вопросы. Последний раз редактировалось temaps; 29.11.2015 в 01:52. |
29.11.2015, 02:27 | #4 |
Регистрация: 29.11.2015
Сообщений: 4
|
Извините, реально не вставил вопрос в тему.
Программа моя, просто не знаю из-за чего вылетает эта ошибка, поскольку условия окончания рекурсии вроде как задал цыклом (не знаю можно ли так, но в условии задачи нужно найти произведение для всех i от 1 до n, n задаем с клавиатуры) |
29.11.2015, 03:50 | #5 |
МегаМодератор
СуперМодератор
Регистрация: 09.11.2010
Сообщений: 7,291
|
temaps, такое сложно списать
JohnyJ, в принципе, решение привел выше temaps. Если рассматривать вашу программу. Во-первых, отбросим строчку Rekurs:= f;, которая при вызове Rekurs с любым параметром будет просто возвращать значение глобальной переменной f. Теперь разберемся с циклом. Предположим, что он проработал, тогда переменная Rekurs будет содержать значение только с последней итерации цикла, а значения с других итераций просто будут потеряны. Но и это еще не конец. Для всех значений i будет вызвана функция Rekurs с параметром, равным (2*i + 1)/ exp(ln(i)*3), так как проверка в коде (n2 = 1), а не (i = 1). То есть, при i = 1 будет вызвана Recurs(3), в которой также произойдет вызов Recurs(3), и так далее. Таким образом программа займет весь стек.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Pascal. Рекурсия | Rediska512 | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 17.02.2012 15:54 |
pascal.Рекурсия. | kelly | Помощь студентам | 2 | 16.12.2011 18:37 |
Рекурсия!!!(PASCAL) | Cas01 | Помощь студентам | 0 | 16.03.2011 17:45 |
Pascal Рекурсия! | Korun | Помощь студентам | 3 | 16.12.2009 16:50 |
Pascal: Рекурсия | MaGWaY_minsk | Помощь студентам | 2 | 19.02.2009 09:46 |