Given an array of distinct integers candidates and an integer target, return every unique combination of candidates that sums to target. Each candidate may be used UNLIMITED times — reuse is allowed.
Reuse is the trap. The tree of choices is infinite unless you cap it — either by the target collapsing to zero (accept) or overshooting (reject). Counting is not the hard part; knowing when to stop is.
I once tried to find all the ways to spend exactly seven dollars when the only coins I had were nickels, dimes, tens, and a half-dollar denomination I had invented on the spot. Two minutes in, I had scribbled twenty-three paths on a napkin, and at least half of them ended with negative dollars. I was, technically, insolvent.
That is the shape of the problem. Pick items from a menu of candidates, add them up, report every combination that lands EXACTLY on the target. Your candidates are 2367, your target is 7, and you may reuse any candidate as many times as you like. The trap is not counting — it is knowing when to stop.
Produce 3 more overshoots to unlock the next step. Your recursion has no brakes — lean into that.