ошибка "Ошибка времени выполнения: StackOverflowException: П

Форум для изучающих FPC и их учителей.

Модератор: Модераторы

ошибка "Ошибка времени выполнения: StackOverflowException: П

Сообщение serjufa » 28.02.2021 19:41:23

здравствуйте.
Выходит ошибка "Ошибка времени выполнения: 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.
serjufa
незнакомец
 
Сообщения: 2
Зарегистрирован: 28.02.2021 19:31:14

Re: ошибка "Ошибка времени выполнения: StackOverflowExceptio

Сообщение runewalsh » 28.02.2021 20:58:14

Если
>F(n) = n + 2*F(n + 2), когда n ≥ 3 и четно
то F(n) требует (вызывает) F(n + 2). Если число n чётное и ≥3, то число (n + 2) тоже чётное и тем более ≥3, так что процесс никогда не завершится, а если использовать рекурсию — превысит её максимальную глубину. Автор или ты перепутал плюс с минусом или единицу с двойкой.
Аватара пользователя
runewalsh
энтузиаст
 
Сообщения: 578
Зарегистрирован: 27.04.2010 00:15:25

Re: ошибка "Ошибка времени выполнения: StackOverflowExceptio

Сообщение serjufa » 28.02.2021 22:12:17

Спасибо. Видимо, автор (г-н Поляков) опечатался в задании по ЕГЭ.
serjufa
незнакомец
 
Сообщения: 2
Зарегистрирован: 28.02.2021 19:31:14


Вернуться в Обучение Free Pascal

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 11

Рейтинг@Mail.ru