Elepsis Eclipse
Гений
(67285)
4 года назад
Ну все задачи на тему рекурсии, решаются одинаково.
Их надо делать "на бумажке" только на начальном этапе, чтобы понять, что происходит. Дальше - хорошо бы начать кодом узнавать ответы))
________________
F(1) = 1
F(n) = F(n-1)*(n + 2), при n > 1
Чему равно значение функции F(5)?
F(5) = F(4) * 7
F(5) не будет выводиться, пока не узнает значение F(4). Запоминает, что должен умножить ответ на 7 и вызывает F(4), дальше ждет...
F(4) = F(3) * 6
F(3) = F(2) * 5
F(2) = F(1) * 4 = 4
Рекурсия завершилась, теперь все остветы можно начать возвращать:
F(3) = 4 * 5 = 20
F(4) = 20 * 6 = 120
F(5) = 120 * 7 = 840
___________________
В виде кода это выглядит так:
def F(n):
if n == 1:
return 1
return (n + 2) * F(n-1)
print( F(5) )
________________
коэфф (n + 2) специально написан вначале, чтобы не путать с вызовом функции. Потому что существуют еще вызовы "по цепочке" F(1)(2)(3)
F(1) = 1
F(n) = F(n-1)*(n + 2), при n > 1
Чему равно значение функции F(5)?
2) Алгоритм вычисления значения функции F(n), где n - натуральное число, задан следующими соотношениями:
F(1) = 1
F(n) = F(n-1)*(2*n + 1), при n > 1
Чему равно значение функции F(4)?
3) Дан рекурсивный алгоритм:
def F(n):
print('*')
if n > 0:
F(n-2)
F(n // 2)
Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(7)?
4)Дан рекурсивный алгоритм:
def F(n):
print('*')
if n > 0:
F(n-3)
F(n-2)
F(n // 2)
F(n // 2)
Сколько символов "звездочка" будет напечатано на экране при выполнении вызова F(6)?
5) Определите, что выведет на экран программа при вызове F(6).
def F(n):
if n > 0:
F(n - 2)
F(n // 3)
print(n)
6)Ниже записаны две рекурсивные процедуры, F и G:
def F(n):
print('*')
if n > 0:
print('*')
G(n - 1)
def G(n):
print('*')
if n > 1:
F(n - 2)
Сколько символов "звёздочка" будет напечатано на экране при выполнении вызова F(12)?
7) Дан рекурсивный алгоритм:
def F(n):
print(n)
if n < 5:
F(n + 1)
F(n + 3)
Найдите сумму чисел, которые будут выведены при вызове F(1).