Информатика · ҰБТ сұрағы №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).
«Алгоритмдер және программалау» тақырыбынан тағы
- Программа экранға не шығарады? def g(n): if n == 0: return 0 if n % 2: return g(n - 1) + n return g(n // 2) *...
- Программа экранға не шығарады? def h(a, b): c = 0 while b: a, b = b, a % b c += 1 return a, c print(*h(987, 61...
- Python-дағы open() функциясының файл режимін оның әрекетімен сәйкестендіріңіз.
- a — өсу ретімен реттелген 100 элементті массив (индекстері 0–99), x мәні a[70]-те тұр. Код аяқталғанда steps а...
- solve(n, k) функциясы математикалық тұрғыдан қандай шаманы есептейді?
- Графтар туралы қай тұжырымдар дұрыс?
- Өлшенген бағытсыз графтың қабырғалары (төбе–төбе: салмағы): A–B: 4, A–C: 2, B–C: 1, B–D: 5, C–D: 8, C–E: 10, D...
- Ломуто бөлу (partition) процедурасынан кейін массив қандай болады? a = [8, 3, 9, 5, 2, 7, 6] p = a[-1] i = -1...