Информатика · ҰБТ сұрағы №13891
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))

Жадыны пайдаланбайтын solve(6, 2) шақыруы барлығы неше рет (бастапқыны қоса) орындалады?

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

Қайталану шақыру саны c(n,k) = 1 + c(n−1,k−1) + c(n−1,k); базалық жағдайлар 1 шақыру: c(6,2) = 29.

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