Разбиение на слагаемые числа
5
согласно статьи с кодом должно выдать
2+1+1
, а выдает только количество слогаемых 3.
Как вывести на принт сами слагаемые?
Почему когда я указываю большие разбиваемого и количества слогаемых,вылетает ошибка:
print(partition(1024,5))
вывод:
Traceback (most recent call last):
File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 31, in
start(fakepyfile,mainpyfile)
File "/data/user/0/ru.iiec.pydroid3/files/accomp_files/iiec_run/iiec_run.py", line 30, in start
exec(open(mainpyfile).read(), __main__.__dict__)
File "", line 19, in
File "", line 13, in partition
File "", line 13, in partition
File "", line 13, in partition
[Previous line repeated 992 more times]
File "", line 6, in partition
RecursionError: maximum recursion depth exceeded in comparison
[Program finished]
def partition(n, k, memo=None):
if memo is None:
memo = {}
if (n, k) in memo:
return memo[(n, k)]
if n == 0 and k == 0:
return 1
elif n == 0 or k == 0:
return 0
elif n < k:
return partition(n, n, memo)
else:
memo[(n, k)] = partition(n - 1, k - 1, memo) + partition(n - k, k, memo)
return memo[(n, k)]
print(partition(5,3))