The alternative, non-working, unsubmitable code:
Notice the sort isn't necesary but it helps following the recursive iterations.
def change_gen(amount, coins):
'''input - amount of money, and coins, yields recursevly all of the combinations for change'''
#print("running with:",amount,coins)
coins.sort(key=None,reverse = True) #making more sense.
if coins != []:
big = coins[0]
tmp=change_gen(amount,coins[1:])
tmp2=change_gen(amount-big,coins)
if amount < big: #biggest coin is too big for change
yield next(tmp) # returning a list without choosing the biggest coin from now on
if amount > big:
yield [big] + next(tmp2) #returning a list after choosing 1 big coin
yield next(tmp) #returning a list without choosing the biggest coin from now on
if amount == big:
yield [big] #stop cond amount reached
yield next(tmp) #more options to finish without beggest coin