16_5:
Ниже записаны две рекурсивные функции (процедуры):
F и
G.
Чему будет равно значение, вычисленное при выполнении вызова F(7)?
Паскаль:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| function F(n: integer):integer; forward;
function G(n: integer):integer; forward;
function F(n:integer):integer;
begin
if (n > 2) then
F:= F(n - 1) + G(n - 2)
else F:= 1;
end;
function G(n:integer):integer;
begin
if (n > 2)then
G:= G(n - 1) + F(n -2)
else G:= 1;
end; |
function F(n: integer):integer; forward;
function G(n: integer):integer; forward;
function F(n:integer):integer;
begin
if (n > 2) then
F:= F(n - 1) + G(n - 2)
else F:= 1;
end;
function G(n:integer):integer;
begin
if (n > 2)then
G:= G(n - 1) + F(n -2)
else G:= 1;
end;
Бейсик:
FUNCTION F(n)
IF n > 2 THEN
F = F(n - 1) + G(n - 2)
ELSE
F = 1;
END IF
END FUNCTION
FUNCTION G(n)
IF n > 2 THEN
G = G(n - 1) + F(n -2)
ELSE
G = 1;
END IF
END FUNCTION |
FUNCTION F(n)
IF n > 2 THEN
F = F(n - 1) + G(n - 2)
ELSE
F = 1;
END IF
END FUNCTION
FUNCTION G(n)
IF n > 2 THEN
G = G(n - 1) + F(n -2)
ELSE
G = 1;
END IF
END FUNCTION
|
Python:
def F(n):
if n > 2:
return F(n - 1) + G(n - 2)
else:
return 1
def G(n):
if n > 2:
return G(n - 1) + F(n - 2)
else:
return 1 |
def F(n):
if n > 2:
return F(n - 1) + G(n - 2)
else:
return 1
def G(n):
if n > 2:
return G(n - 1) + F(n - 2)
else:
return 1
|
С++:
int F(int n);
int G(int n);
int F(int n) {
if (n > 2)
return F(n - 1) + G(n - 2);
else
return 1;
}
int G(int n) {
if (n > 2)
return G(n - 1) + F(n - 2);
else
return 1;
} |
int F(int n);
int G(int n);
int F(int n) {
if (n > 2)
return F(n - 1) + G(n - 2);
else
return 1;
}
int G(int n) {
if (n > 2)
return G(n - 1) + F(n - 2);
else
return 1;
}
|
✍ Решение:
Ответ: 13