Как работает этот рекурсивный алгоритм разложения на слагаемые?
Алгоритм и вправду написан "чудесно", поди разбери.

Но логика такая.
Берем цифру 5.
Её можно получить как
1 + 1 + 1 + 1 + 1
2 + 1 + 1 + 1
2 + 2 + 1
3 + 1 + 1
3 + 2
4 + 1
(остальные - повторы)

Алгоритм, повышая первую цифру и запуская рекурсию с уменьшением гарантирует, что комбинаций-повторов не будет, т.к. следующая цифра всегда меньше или равна предыдущей, а количество шагов ограничено суммой.

При этом в векторе `vv`, в месте где `ans++` происходит, содержится один набор слагаемых, а `ans` в конце скрипта пишет число возможных комбинаций.
Функция генерирует все разбиения числа n на слагаемые не больше maxx. Ддя этого ыункуия перебирает, а какое же максимальное число будет в разбиении (цикл по i), берет это число и рекурсивно разбивает оставшуюся часть. Обратите внимание, в качестве maxx в рекурсии передается i. Ведь именно это было максимальное число в перебираемом разбиении. Значит следующее не может его превышать.

Вся эта сложность с максимальным числом сделана, что бы не перебирать перестановки слагаемых. Ведь 4=1+2+1 можно по идее получить тремя способами, меняя порядок. Генерируя слагаемые в не возрастающем прядке, мы избавляемся от таких дубликатов.