组合、多重循环、Σn²、Σn³
从6个数中取3个,有C(6,3)=6×5×4÷3!种情况。组合把123、132、231、213、312、321看作一种情况。
我们规定取数时,“后来者必须居上”,上述6个中就只有123一种合法。
我们可以sort后放进集合,但像冒泡排序那样的方法不仅更简单,而且更描述了取法:j从i+1开始,k从j+1开始。
我们还可以setFactory = SetFactory::getSetFactory(),再setFactory.createSet()
再看C(6,2),循环变为两重,i=1..n,j=2..n, sum=(n-1)+(n-2)+...+1,倒过来写就是Σn的求和公式。
请看下面的程序:
r = range; N = 6 + 1 sum = 0 for i in r(1, N): for j in r(i+1, N): for k in r(j+1, N): sum += 1 print(sum) # 20 def fn (i): sum = 0 for j in r(i+1, N): for k in r(j+1, N): sum += 1 return sum c2 = lambda n: n * (n - 1) // 2 print(fn(1), fn(2), fn(3), fn(4)) # 10 6 3 1 print(c2(5), c2(4), c2(3), c2(2)) # 10 6 3 1
第一个球拿了1后,后面两个球的选择还比较多。拿了4后,后面就只能5、6了。内两层循环也是算组合数。
C(n,2) = (n² - n) / 2; Σn的已知。反复套这个方法,可得Σ(n的任意次方)的求和公式。有点像数学归纳法但不是。
数学归纳法在本例是:天上掉下来个求和公式,n=1时成立,如果n=k时成立,可容易证明n=k+1时也成立。
AI知道这个:




朱世杰恒等式可通过组合数加法公式(杨辉三角性质)递推证明,核心是 “裂项相消”。
朱世杰(约1249—约1314)被誉为 “中世纪世界最伟大的数学家之一”,与宋代的秦九韶、李冶、杨辉并称为 “宋元数学四大家”。
从4位数学家中取2位的组合数是多少?可分为包含和不包含朱世杰两种情况,然后求和。

浙公网安备 33010602011771号