假设“方法”意味着“硬币摆放的精确顺序”,这里有一个递归的解决方案。在def T_recurse (n):
if 0 == n:
return 1
elif n < 3:
return 0
else:
return T_recurse(n - 4) + T_recurse(n - 6)
print(T_recurse(100))
以及更快的解决方案
^{pr2}$
(也有一个涉及多项式根的解析解x^6 - x^2 - 1,但实际计算起来比较慢。)
假设ways的意思是“一个有这么多,另一个有那么多”,那么这里有一个递归的解决方案:
^{3}$
递归式的经济放缓虽然仍呈指数级增长,但并不严重。但是,迭代给你的是二次型:def S_iter (n, coins):
last_row = [0 for i in range(n + 1)]
last_row[0] = 1
for coin in coins:
this_row = []
for i in range(n+1):
if i < coin:
this_row.append(last_row[i])
else:
this_row.append(last_row[i] + this_row[i - coin])
last_row = this_row
return last_row[n]