16_3:
Ниже записаны две рекурсивные функции (процедуры):
F и
G.
Сколько символов «звездочка» будет напечатано на экране при выполнении вызова F(20)?
Паскаль:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| procedure F(n: integer); forward;
procedure G(n: integer); forward;
procedure F(n: integer); begin
write ('*');
if n > 10 then
F(n - 2)
else G(n);
end;
procedure G(n: integer);
begin
write ('**');
if n > 1 then F(n - 3);
end; |
procedure F(n: integer); forward;
procedure G(n: integer); forward;
procedure F(n: integer); begin
write ('*');
if n > 10 then
F(n - 2)
else G(n);
end;
procedure G(n: integer);
begin
write ('**');
if n > 1 then F(n - 3);
end;
Бейсик:
DECLARE SUB F(n)
DECLARE SUB G(n)
SUB F(n)
PRINT "*"
IF n > 10 THEN
F(n - 2)
ELSE
G (n)
END IF
END SUB
SUB G(n)
PRINT "**"
IF n > 1 THEN
F(n - 3)
END IF
END SUB |
DECLARE SUB F(n)
DECLARE SUB G(n)
SUB F(n)
PRINT "*"
IF n > 10 THEN
F(n - 2)
ELSE
G (n)
END IF
END SUB
SUB G(n)
PRINT "**"
IF n > 1 THEN
F(n - 3)
END IF
END SUB
|
Python:
def F(n):
print("*")
if n > 10:
F(n - 2)
else:
G(n)
def G(n):
print("**")
if n > 1:
F(n - 3) |
def F(n):
print("*")
if n > 10:
F(n - 2)
else:
G(n)
def G(n):
print("**")
if n > 1:
F(n - 3)
|
С++:
void F(int n) {
std::cout << "*";
if (n > 10) {
F(n - 2);
}
else {
G(n);
}
}
void G(int n) {
std::cout << "**";
if (n > 1)
F(n - 3);
} |
void F(int n) {
std::cout << "*";
if (n > 10) {
F(n - 2);
}
else {
G(n);
}
}
void G(int n) {
std::cout << "**";
if (n > 1)
F(n - 3);
}
|
✍ Решение:
Ответ: 17