Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Паскаль, Turbo Pascal, PascalABC.NET
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.02.2021, 18:26   #1
serjufa
Пользователь
 
Регистрация: 18.05.2007
Сообщений: 19
По умолчанию Ошибка времени выполнения: StackOverflowException: Программа завершена из-за переполнения программного стека

здравствуйте.
Выходит ошибка "Ошибка времени выполнения: StackOverflowException: Программа завершена из-за переполнения программного стека". В чем ошибка, не пойму.

Вот задача
(Е. Джобс) Алгоритм вычисления функции F(n), где n – натуральное число, задан следующими соотношениями:
F(n) = n + 1 при n < 3,
F(n) = n + 2*F(n + 2), когда n ≥ 3 и четно,
F(n) = F(n – 2) + n – 2, когда n ≥ 3 и нечетно.
Сколько существует чисел n, для которых значение F(n) будет трехзначным.
Ответ известен : 22

Ниже мой код:
//Функция F
Код:
function F(n: integer): integer;
begin
if n < 3 then
F := n + 1
else
if ((n mod 2) = 0) then
F := n + 2 * F(n + 2)
else
F := F(n - 2) + n - 2;
end;

var
cikl, kolvo: integer;
//Основная часть программы, где запускаем функцию.
begin
kolvo := 0;
for cikl := 1 to 100 do
begin
if (F(cikl) >= 100) and (F(cikl) <= 999) then
kolvo := kolvo + 1;
end;

WriteLn(cikl);
end.

Последний раз редактировалось BDA; 28.02.2021 в 19:09.
serjufa вне форума Ответить с цитированием
Старый 28.02.2021, 19:14   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,285
По умолчанию

Во-первых, используйте кнопочку CODE для оформления кода. Во-вторых, можно заметить, что для четных n ≥ 3 функция F(n) зависит от F(n + 2). n + 2 тоже четное число, так что тут возникает бесконечная рекурсия.
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 28.02.2021, 19:27   #3
serjufa
Пользователь
 
Регистрация: 18.05.2007
Сообщений: 19
По умолчанию

Цитата:
Сообщение от BDA Посмотреть сообщение
Во-первых, используйте кнопочку CODE для оформления кода. Во-вторых, можно заметить, что для четных n ≥ 3 функция F(n) зависит от F(n + 2). n + 2 тоже четное число, так что тут возникает бесконечная рекурсия.
понятно. спасибо
serjufa вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ошибка времени выполнения в примере из книги. mindchamber Паскаль, Turbo Pascal, PascalABC.NET 7 28.03.2017 18:13
ошибка времени выполнения. индекс выходит за границы массива Anton19901505 Помощь студентам 1 08.01.2017 11:42
Ошибка: переполнение программного стека Yana92 Помощь студентам 2 28.05.2011 14:47
Ошибка переполнения стека Cannibal Общие вопросы Delphi 1 01.12.2008 21:32
Ошибка переполнения стека из-за использования рекурсий Morrigan13 Помощь студентам 5 02.04.2008 08:04