Может кто-то объяснить почему именно так?
def f(x, y):
global k
if x > y:
return False
if x == y:
return True
else:
return f(x + 1, y) + f(x + 5, y) + f(x * 3, y)
for y in range(2, 100):
if f(1, y) == 175:
print(y)
Почему в данном случае 175 - это количество программ? Это же просто цикл, который подставляет значения к функции? Короче, почему 175 в данном коде - это количество программ?
Ответы (1 шт):
Автор решения: Danis
→ Ссылка
Функцию f возвращает количество способов получить y из x. Для этого она рассматривает три случая.
x > y
Любые три доступных действия увеличиваютx, поэтому функция возвращаетFalse(тоже самое что и ноль)x == y
По той же причине это единственный способ, поэтому возвращаемTrue(1)x < y
Это пара нам не подходит, поэтому рассматриваем три другие (x+1, x+5, 3*x). Они также рассматривают другие случаи пока не дойдут до первых двух условий.
В итоге результат функции, это количество путей до y. Затем в цикле поставляются различные y, ищя те значение при которых функция вернёт 175.