Оригинальный текст из 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);
}
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