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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 04.06.2021, 21:53   #1
Nomad_34
Новичок
Джуниор
 
Регистрация: 04.06.2021
Сообщений: 1
По умолчанию Переполнение стека

Помогите, пожалуйста, разобраться.

Есть задача:
Алгоритм вычисления функции F(n) задан следующими соотношениями:
F(n) = n * n + 3 * n + 9, при n <= 15
F(n) = F(n–1) + n – 2, при n > 15, кратных 3
F(n) = F(n–2) + n + 2, при n > 15, не кратных 3
Определите количество натуральных значений n из отрезка [1; 1000], для которых все цифры значения F(n) чётные.

Вот код:

Код:
Var
  n,x,k,s:integer;
  Function f(n:integer):longint;
         begin
            If (n<=15) then  F:=n*n+3*n+9 else
                             If (n mod 3=0)Then  f:=f(n-1)+n-2 else
                                                 f:=f(n-2)+n+2;
         end;
  begin
  s:=0;
  for n:=1 to 1000 do
            begin
            x:=f(n);
            k:=0;
            while x>0 do begin
                            If (x mod 2<>0) then k:=k+1;
                            x:=x div 10;
                         end;
            If (k=0) then s:=s+1;
            end;
  write(s);
  end.
Выдаёт:
»*Непредвиденное исключение EStackOverflow. Stack overflow. Программа завершена (Program1.pas, строка 6)

Заранее спасибо.
Nomad_34 вне форума Ответить с цитированием
Старый 04.06.2021, 22:11   #2
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Или увеличить размер стека (https://ideone.com/5wXbxI нормально проработал, с общим ограничением памяти в 256 МБ) или добавить мемоизацию (честную или вообще переписать функцию, раз известно, что будут рассчитываться все N от 1 до 1000).
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA на форуме Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переполнение стека Ericnex Помощь студентам 5 08.12.2014 10:12
Переполнение стека DeKot Общие вопросы Delphi 4 02.02.2012 01:28
Переполнение стека NoHeart Общие вопросы Delphi 8 08.11.2009 16:03
Переполнение стека Ake Паскаль, Turbo Pascal, PascalABC.NET 3 30.05.2009 22:39
Переполнение Стека Викдон Паскаль, Turbo Pascal, PascalABC.NET 0 19.12.2008 19:16