n
通过添加一些小于或等于 的数字来考虑所有的结果方式m
。正如你所说,我们称之为p(n,m)
. 例如,p(7,3)=8,因为有 8 种方法可以使小于 3 的数字变成 7,如下所示:(为简单起见,我们可以假设始终按从大到小的顺序添加数字)
- 3+3+1
- 3+2+2
- 3+2+1+1
- 3+1+1+1+1
- 2+2+2+1
- 2+2+1+1+1
- 2+1+1+1+1+1
- 1+1+1+1+1+1+1
现在我们可以将这些组合分成两组:
第一个元素等于m
(在我们的示例中为=3:)的组合
- 3+3+1
- 3+2+2
- 3+2+1+1
- 3+1+1+1+1
第一个元素小于 的组合m
:
- 2+2+2+1
- 2+2+1+1+1
- 2+1+1+1+1+1
- 1+1+1+1+1+1+1
因为组合的每个成员p(n,m)
要么在 Group1 中,要么在 Group2 中,我们可以说p(n,m)=size(Group1) + size(Group2)
. 现在,如果我们证明这一点size(Group1)=p(n-m, m)
并size(Group2)=p(n,m-1)
通过替换我们达到p(n,m)=p(n-m,m)+p(n,m-1)
证明size(Group1)=p(n-m, m)
:
根据上述定义,是通过添加一些小于或等于 的数p(n-m, m)
得出的结果的数量。n-m
m
- 如果您附加
m
到 的每个组合p(n-m, m)
,它将导致 Group1 的成员。所以p(n-m, m) <= size(Group1)
- 如果您删除
m
Group1 的每个成员中的第一个,它将导致p(n-m, m)
. 所以size(Group1) <= p(n-m, m)
=> size(Group1) = p(n-m, m)
. 在我们的示例中:
Group1 <===对应===> p(4, 3) :
- 7=3+
3+1
<===========> 3+1
=4
- 7=3+
2+2
<===========> 2+2
=4
- 7=3+
2+1+1
<=======> 2+1+1
=4
- 7=3+
1+1+1+1
<===> 1+1+1+1
=4
p(n-m,m)
所以和 Group1 的任何成员都是一一对应的,它们的大小是相等的。
证明size(Group2)=p(n, m-1)
:
根据定义,p(n,m-1)
是n
通过添加一些小于或等于m-1
(小于m
)的数字而得到的结果的数量。如果你重新阅读 Group2 的定义,你会发现这两个定义是相同的。=> size(Group2) = p(n, m-1)