【发布时间】:2018-05-13 06:05:05
【问题描述】:
我正在尝试 unwind recursive 这个 algorithm 中的函数。硬币找零问题:给定目标金额 n 和不同硬币价值的列表array,换成找零所需的最少硬币是多少。
def rec_coin(target,coins):
# Default to target value
min_coins = target
# Check to see if we have a single coin match (BASE CASE)
if target in coins:
return 1
else:
# for every coin value that is <= than target
for i in [c for c in coins if c <= target]:
# Recursive Call (add a count coin and subtract from the target)
num_coins = 1 + rec_coin(target-i,coins)
# Reset Minimum if we have a new minimum
if num_coins < min_coins:
min_coins = num_coins
return min_coins
# rec_coin(63,[1,5,10,25])
# 6
这是我拆开后想出来的
1 + 63-1 coins + 62-1 + 61-1 and so on..
为什么我们需要加 1?展开递归的正确方法是什么
【问题讨论】:
标签: algorithm recursion recursive-datastructures