府扔影 发表于 2025-10-31 19:50:17

组合、多重循环、Σ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=1时成立,如果n=k时成立,非常非常容易证明n=k+1时也成立。
反复套这个方法,可得Σn的任意次方的求和公式。AI知道这个:

 

 
朱世杰恒等式可通过组合数加法公式(杨辉三角性质)递推证明,核心是 “裂项相消”。
朱世杰(约1249—约1314)被誉为 “中世纪世界最伟大的数学家之一”,与宋代的秦九韶、李冶、杨辉并称为 “宋元数学四大家”。

来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

焦尔蕾 发表于 2025-11-2 15:06:42

东西不错很实用谢谢分享

扔飒 发表于 2025-11-9 05:15:58

新版吗?好像是停更了吧。

丁若云 发表于 2025-12-5 16:05:06

前排留名,哈哈哈
页: [1]
查看完整版本: 组合、多重循环、Σn²、Σn³