我需要帮助找到以下算法的渐近运行时间,即 Big O(n) -> change_slow() 。我尝试了大师方法和其他技术,但似乎找不到答案。
这是一个硬币找零问题,使用以下数据范围处理:
for i in range(50, 950, 50):
data.append(([1,10,25,50],i))
for i in range(50, 600, 50):
data.append(([1,3,4,17,31],i))
这是算法:
coins = item[0]
amount = item[1]
coins_needed = [j for j in change_slow(amount, coins, [])]
def change_slow(a, v, c):
if(len(v) == 0):
pass
elif(sum(c) == a):
yield c
elif(sum(c) > a):
pass
else:
for i in change_slow(a, v[:], c + [v[0]]):
yield i
for i in change_slow(a, v[1:], c):
yield i
T(n) = 形式的方程是什么?