Friday, November 10, 2017

Решение задачи 11 ЕГЭ Информатика Пробник 2 2018 ( inform20171106proba05+otvet.pdf ) 10.11.17


   Оригинальный текст  из http://bsoh1.tat.rusobr.ru/IKT/EGE/ege2016web/ege11.htm
  
66)   (И. Тощенко) Дан рекурсивный алгоритм:
function F(n: integer): integer;
begin
  if n < 5 then
    F:= F(n*3) + F(n+3) + F(n+1)
  else
    F:= n div 2;
end;
Чему будет равно значение, вычисленное алгоритмом при выполнении вызова F(2)?

  


 Source code


[boris@fedora26workstation GCC]$ cat  recursEGE11DB.c
#include <stdio.h>
int cnt ;

int F(int n)
{
cnt++ ;
printf("%s%d%s\t","F(",n,")");

switch (cnt) {
case 1:
  printf ("\n");
  break;
case 4:
  printf ("\n"); printf ("\t\t");
  break;
case 7:
  printf ("\n"); printf ("\t\t\t\t");
  break;
case 10:
  printf ("\n"); printf ("\t\t\t\t\t");
  break;
default:
  break;
}

if (n < 5) {
   return F(3*n) + F(n+3) + F(n+1);
}
else {
   return  n / 2 ;
 }
}

int main(void)
{
int res,n=2;
  res = F(n);
printf("%s%d\n","Result = ",res);
}

*************************
Runtime output
*************************
[boris@fedora26workstation GCC]$ gcc -o recursEGE11DB recursEGE11DB.c
[boris@fedora26workstation GCC]$ strip  recursEGE11DB
[boris@fedora26workstation GCC]$ ls -l  recursEGE11DB
-rwxrwxr-x. 1 boris boris 6160 Nov 10 20:49 recursEGE11DB
[boris@fedora26workstation GCC]$ file  recursEGE11DB
recursEGE11DB: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 2.6.32, BuildID[sha1]=94912d58f183297fd10d3bbd6a944f883046064e, stripped
[boris@fedora26workstation GCC]$ ./recursEGE11DB
F(2)   
F(6)    F(5)    F(3)   
                      F(9)    F(6)    F(4)   
                                           F(12)    F(7)    F(5)   
                                                       Result = 23

 
  ****************************************************************
  Краткое пояснение работы алгоритма рекурсии
  ***************************************************************
  F(6) + F(5) + F(3) = 3 + 2 + F(3) =
  5 + F(9) + F(6) + F(4) = 5 + 4 + 3 + F(12) + F(7) + F(5) =
  12 + 6 +3 + 2 = 23

  Ответ : 23

67)(И. Тощенко) Дан рекурсивный алгоритм:

function F(n: integer): integer;
begin
  if n < 5 then
    F:= F(n+3) + F(2*n) + F(3*n div 2)
  else
    F:= n + 2;
end;
Чему будет равно значение, вычисленное алгоритмом при выполнении вызова F(3)?

F:= F(6)+F(6)+F(4) = 16+F(7)+F(8)+F(6) = 16+9+10+8 = 43

68)(И. Тощенко) Дан рекурсивный алгоритм:
function F(n: integer): integer;
begin
  if n < 6 then
    F:= n+F(n+3) * F(2*n)
  else
    F:= n*2;
end;
Чему будет равно значение, вычисленное алгоритмом при выполнении вызова F(3)?

F := 3 +F(6)*F(6) = 3+12*12 = 147

64)   (И. Тощенко) Дан рекурсивный алгоритм:
function F(n: integer): integer;
begin
  if n >= 3 then
    F:= F(n-3) + F(n-2)*F(n-1)
  else
    F:= n;
end;
Чему будет равно значение, вычисленное алгоритмом при выполнении вызова F(7)?


F(7) := F(4)+F(5)*F(6)
F(4) := F(1)+F(2)*F(3)
F(3) := F(0)+F(1)*F(2)
F(2) := 2
F(3) := 0+1*2 =2
F(4) := 1+4 = 5
F(5) := F(2)+F(3)*F(4) = 2+2*5=12
F(6) := F(3)+F(4)*F(5) = 2+5*12=62
F(7) := F(4)+F(5)*F(6) = 5+12*62=749

No comments:

Post a Comment