здравствуйте.
Выходит ошибка "Ошибка времени выполнения: 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.
			
			
					
		
 
 
  
        	








