Информатика · ҰБТ сұрағы №13892
def solve(n, k): if k == 0 or k == n: return 1 return solve(n - 1, k - 1) + solve(n - 1, k) calls = 0 memo = {} def solve2(n, k): global calls calls += 1 if k == 0 or k == n: return 1 if (n, k) in memo: return memo[(n, k)] memo[(n, k)] = solve2(n - 1, k - 1) + solve2(n - 1, k) return memo[(n, k)] print(solve(6, 2)) print(solve2(6, 2), calls, len(memo))

Программаның соңғы print командасы қандай үш мәнді шығарады?

Дұрыс жауабы мен түсіндірмесі
Жауабы: 15 17 8

memo арқасында қайталанатын шақырулар тез аяқталады: solve2 барлығы 17 рет шақырылады, ал memo-да 8 кілт сақталады: (2,1), (3,1), (3,2), (4,1), (4,2), (5,1), (5,2), (6,2).

«Алгоритмдер және программалау» тақырыбынан тағы