у меня есть рекурсивная функция для вычисления следующего члена последовательности:
a1 = −2, a2 = 2, an = 3an−1 − an−2
код:
function f(n: integer): integer;
begin
if n = -2
then f:= 1
else if n = 2
then f:= 2
else f:= 3*f(n-1)-f(n-2);
end;
var n: integer;
begin
write('n = ');
readln(n);
write(f(n))
end.
если я ввожу n = 3, то выдается ошибка: Программа завершена из-за переполнения программного стека.
как это решить?