Помогите с информатикой, задание на фото

Помогите с информатикой, задание на фото

Задать свой вопрос
Васеченков Игорек
Это только программно решать, вручную крыша отъедет от такового объема рекурсии
1 ответ
Для решения задачки написана программка, в которую вставлены операторы вывода с целью трассировки.

// PascalABC.NET 3.1, сборка 1192 от 07.03.2016
function G(n:integer):integer; forward;

function F(n:integer):integer;
begin
  Writeln('Вход в F(',n,')');
  if n=1 then Result:=1
  else Result:=F(n-1)-G(n-1);
  Writeln('Выход из F(',n,') со значением ',Result)
end;

function G(n:integer):integer;
begin
  Writeln('Вход в G(',n,')');
  if n=1 then Result:=1
  else Result:=F(n-1)+G(n-1);
  Writeln('Выход из G(',n,') со значением ',Result)
end;

begin
  Writeln('РЕЗУЛЬТАТ: ',F(5)/G(5)) 
end.

Результат исполнения программки (трассировочная таблица)
Вход в F(5)
Вход в F(4)
Вход в F(3)
Вход в F(2)
Вход в F(1)
Выход из F(1) со значением 1
Вход в G(1)
Выход из G(1) со значением 1
Выход из F(2) со значением 0
Вход в G(2)
Вход в F(1)
Выход из F(1) со значением 1
Вход в G(1)
Выход из G(1) со значением 1
Выход из G(2) со значением 2
Выход из F(3) со значением -2
Вход в G(3)
Вход в F(2)
Вход в F(1)
Выход из F(1) со значением 1
Вход в G(1)
Выход из G(1) со значением 1
Выход из F(2) со значением 0
Вход в G(2)
Вход в F(1)
Выход из F(1) со значением 1
Вход в G(1)
Выход из G(1) со значением 1
Выход из G(2) со значением 2
Выход из G(3) со значением 2
Выход из F(4) со значением -4
Вход в G(4)
Вход в F(3)
Вход в F(2)
Вход в F(1)
Выход из F(1) со значением 1
Вход в G(1)
Выход из G(1) со значением 1
Выход из F(2) со значением 0
Вход в G(2)
Вход в F(1)
Выход из F(1) со значением 1
Вход в G(1)
Выход из G(1) со значением 1
Выход из G(2) со значением 2
Выход из F(3) со значением -2
Вход в G(3)
Вход в F(2)
Вход в F(1)
Выход из F(1) со значением 1
Вход в G(1)
Выход из G(1) со значением 1
Выход из F(2) со значением 0
Вход в G(2)
Вход в F(1)
Выход из F(1) со значением 1
Вход в G(1)
Выход из G(1) со значением 1
Выход из G(2) со значением 2
Выход из G(3) со значением 2
Выход из G(4) со значением 0
Выход из F(5) со значением -4
Вход в G(5)
Вход в F(4)
Вход в F(3)
Вход в F(2)
Вход в F(1)
Выход из F(1) со значением 1
Вход в G(1)
Выход из G(1) со значением 1
Выход из F(2) со значением 0
Вход в G(2)
Вход в F(1)
Выход из F(1) со значением 1
Вход в G(1)
Выход из G(1) со значением 1
Выход из G(2) со значением 2
Выход из F(3) со значением -2
Вход в G(3)
Вход в F(2)
Вход в F(1)
Выход из F(1) со значением 1
Вход в G(1)
Выход из G(1) со значением 1
Выход из F(2) со значением 0
Вход в G(2)
Вход в F(1)
Выход из F(1) со значением 1
Вход в G(1)
Выход из G(1) со значением 1
Выход из G(2) со значением 2
Выход из G(3) со значением 2
Выход из F(4) со значением -4
Вход в G(4)
Вход в F(3)
Вход в F(2)
Вход в F(1)
Выход из F(1) со значением 1
Вход в G(1)
Выход из G(1) со значением 1
Выход из F(2) со значением 0
Вход в G(2)
Вход в F(1)
Выход из F(1) со значением 1
Вход в G(1)
Выход из G(1) со значением 1
Выход из G(2) со значением 2
Выход из F(3) со значением -2
Вход в G(3)
Вход в F(2)
Вход в F(1)
Выход из F(1) со значением 1
Вход в G(1)
Выход из G(1) со значением 1
Выход из F(2) со значением 0
Вход в G(2)
Вход в F(1)
Выход из F(1) со значением 1
Вход в G(1)
Выход из G(1) со значением 1
Выход из G(2) со значением 2
Выход из G(3) со значением 2
Выход из G(4) со значением 0
Выход из G(5) со значением -4
Итог: 1

Вариант с хранением данных

// PascalABC.NET 3.1, сборка 1192 от 07.03.2016
var
  RF,RG:array[-100..100] of integer;

function G(n:integer):integer; forward;

function F(n:integer):integer;
begin
  Writeln('Вход в F(',n,')');
  if RF[n]lt;gt;777 then Result:=RF[n]
  else begin
    if n=1 then Result:=1
    else Result:=F(n-1)-G(n-1);
    RF[n]:=Result
    end;
  Writeln('Выход из F(',n,') со значением ',Result)
end;

function G(n:integer):integer;
begin
  Writeln('Вход в G(',n,')');
  if RG[n]lt;gt;777 then Result:=RG[n]
  else begin
    if n=1 then Result:=1
    else Result:=F(n-1)+G(n-1);
    RG[n]:=Result
    end;
  Writeln('Выход из G(',n,') со значением ',Result)
end;

begin
  for var i:=-100 to 100 do begin
    RF[i]:=777; RG[i]:=777
    end;
  Writeln('Итог: ',F(5)/G(5))
end.

Результат исполнения программки
Вход в F(5)
Вход в F(4)
Вход в F(3)
Вход в F(2)
Вход в F(1)
Выход из F(1) со значением 1
Вход в G(1)
Выход из G(1) со значением 1
Выход из F(2) со значением 0
Вход в G(2)
Вход в F(1)
Выход из F(1) со значением 1
Вход в G(1)
Выход из G(1) со значением 1
Выход из G(2) со значением 2
Выход из F(3) со значением -2
Вход в G(3)
Вход в F(2)
Выход из F(2) со значением 0
Вход в G(2)
Выход из G(2) со значением 2
Выход из G(3) со значением 2
Выход из F(4) со значением -4
Вход в G(4)
Вход в F(3)
Выход из F(3) со значением -2
Вход в G(3)
Выход из G(3) со значением 2
Выход из G(4) со значением 0
Выход из F(5) со значением -4
Вход в G(5)
Вход в F(4)
Выход из F(4) со значением -4
Вход в G(4)
Выход из G(4) со значением 0
Выход из G(5) со значением -4
Итог: 1
Эмилия Болтнева
Точонн, задачка усложнится, уменьшится количество вызовов функций.
Егор Гремучев
*точнее
Виктор Дрюбин
А усложниться еще и тем, что мы вначале не знаем глубины рекурсии, как следует не знаем, какого размера массив пригодится. Следовательно, придется делать списочную структуру. И еще, нужен будет действенный механизм поиска в ней. Так что лучше уж так, по-обычному.
Люда Сапотовская
Cпасибо огромное, я решала вручную, и ,можно сказать, примитивно: поначалу считала f(2), Q(2) и так дальше до F(5), Q(5). В итоге, ответ вышел таковой же
Zheka Zedin
Ой, т.е. заместо Q, G
Vjacheslav Koluntaev
Сейчас дам вариант с табличкой, это приблизительно как человек бы считал.
Эмилия
Вручную такое решать могут только ну очень замотивированные люди.
Роман Кузминичев
Благовидно. Себе сохранил. Классный код
Виктория Шершаева
Спасибо
Ошнина Милена
Это задание из ЕГЭ, так что у меня выбора нет :)
, оставишь ответ?
Имя:*
E-Mail:


Добро пожаловать!

Для того чтобы стать полноценным пользователем нашего портала, вам необходимо пройти регистрацию.
Зарегистрироваться
Создайте собственную учетную запить!

Пройти регистрацию
Авторизоваться
Уже зарегистрированны? А ну-ка живо авторизуйтесь!

Войти на сайт