def recursion_change(coins, money):
"""
Returns a tuple containing:
:an array counting which coins are used to make change, mirroring the input array
:the number of coins to make tender.
:coins: List[int]
:money: int
:rtype: (List[int], int)
"""
change_list = [0] * len(coins)
def _helper_recursion_change(i, k, change_list):
if k == 0: # Base case: money in this (sub)problem matches change precisely
return 0
elif i == -1 or k < 0: # Base case: change cannot be made for this subproblem
return float('inf')
else: # Otherwise, simplify by recursing:
# Take the minimum of:
# the number of coins to make i cents
# the number of coins to make k-i cents
return min(_helper_recursion_change(i-1, k, change_list), 1 + _helper_recursion_change(i, k-coins[i], change_list))
return (_helper_recursion_change(len(coins)-1, money, change_list))
print str(recursion_change([1, 5, 10, 25, 50, 100], 6)) # Current Output: 2
# Desired Output: ([1, 1, 0, 0, 0, 0], 2)
ZGVmIHJlY3Vyc2lvbl9jaGFuZ2UoY29pbnMsIG1vbmV5KToKICAgICIiIgogICAgUmV0dXJucyBhIHR1cGxlIGNvbnRhaW5pbmc6CiAgICAgICAgOmFuIGFycmF5IGNvdW50aW5nIHdoaWNoIGNvaW5zIGFyZSB1c2VkIHRvIG1ha2UgY2hhbmdlLCBtaXJyb3JpbmcgdGhlIGlucHV0IGFycmF5CiAgICAgICAgOnRoZSBudW1iZXIgb2YgY29pbnMgdG8gbWFrZSB0ZW5kZXIuCiAgICAKICAgIDpjb2luczogTGlzdFtpbnRdCiAgICA6bW9uZXk6IGludAogICAgOnJ0eXBlOiAoTGlzdFtpbnRdLCBpbnQpCiAgICAiIiIKICAgIGNoYW5nZV9saXN0ID0gWzBdICogbGVuKGNvaW5zKQoKICAgIAoKICAgIGRlZiBfaGVscGVyX3JlY3Vyc2lvbl9jaGFuZ2UoaSwgaywgY2hhbmdlX2xpc3QpOgogICAgICAgIGlmIGsgPT0gMDogIyBCYXNlIGNhc2U6IG1vbmV5IGluIHRoaXMgKHN1Yilwcm9ibGVtIG1hdGNoZXMgY2hhbmdlIHByZWNpc2VseQogICAgICAgICAgICByZXR1cm4gMAogICAgICAgIGVsaWYgaSA9PSAtMSBvciBrIDwgMDogIyBCYXNlIGNhc2U6IGNoYW5nZSBjYW5ub3QgYmUgbWFkZSBmb3IgdGhpcyBzdWJwcm9ibGVtCiAgICAgICAgICAgIHJldHVybiBmbG9hdCgnaW5mJykKICAgICAgICBlbHNlOiAjIE90aGVyd2lzZSwgc2ltcGxpZnkgYnkgcmVjdXJzaW5nOgogICAgICAgICAgICAjIFRha2UgdGhlIG1pbmltdW0gb2Y6CiAgICAgICAgICAgICAgICAjIHRoZSBudW1iZXIgb2YgY29pbnMgdG8gbWFrZSBpIGNlbnRzCiAgICAgICAgICAgICAgICAjIHRoZSBudW1iZXIgb2YgY29pbnMgdG8gbWFrZSBrLWkgY2VudHMKICAgICAgICAgICAgcmV0dXJuIG1pbihfaGVscGVyX3JlY3Vyc2lvbl9jaGFuZ2UoaS0xLCBrLCBjaGFuZ2VfbGlzdCksIDEgKyBfaGVscGVyX3JlY3Vyc2lvbl9jaGFuZ2UoaSwgay1jb2luc1tpXSwgY2hhbmdlX2xpc3QpKQogICAgcmV0dXJuIChfaGVscGVyX3JlY3Vyc2lvbl9jaGFuZ2UobGVuKGNvaW5zKS0xLCBtb25leSwgY2hhbmdlX2xpc3QpKQoKcHJpbnQgc3RyKHJlY3Vyc2lvbl9jaGFuZ2UoWzEsIDUsIDEwLCAyNSwgNTAsIDEwMF0sIDYpKSAjIEN1cnJlbnQgT3V0cHV0OiAyCgojIERlc2lyZWQgT3V0cHV0OiAoWzEsIDEsIDAsIDAsIDAsIDBdLCAyKQ==