我们都喜欢递归! 不是吗?
考虑一个有三个参数的递归函数w(a, b, c):
如果a <= 0或b <= 0或c <= 0,则
w(a, b, c)=1。
如果a> 20或b> 20或c> 20,则
w(a, b, c)=w(20, 20, 20)。
如果a <b且b <c,则
w(a, b, c)=w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c)
否则它返回:
w(a, b, c)=w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b, c-1) - w(a-1, b-1, c-1)
这是一个易于实现的功能。 问题是,如果直接实现,对于a,b和c的中等值(例如,a = 15,b = 15,c = 15),由于大量递归,程序需要数小时才能运行。