如何获得n(n-1)(n-2) / 6的结果

com*_*ous 4 python algorithm

在我的 Python 书中,问题要求证明x运行以下代码后的值:

x = 0
for i in range(n):
    for j in range(i+1, n):
        for k in range(j+1, n):
            x += 1
Run Code Online (Sandbox Code Playgroud)

我能看到的是:

i = 0;  j=1;  k=2:  from 2 to n, x+=1, (n-2) times 1
i = 1;  j=2;  k=3:  from 3 to n, x+=1, (n-3) times 1
...
i=n-3;  j=n-2; k=n-1: from n-1 to n, x+=1, just 1
i=n-2;  j=n-1; k=n doesn't add 1
Run Code Online (Sandbox Code Playgroud)

所以看起来x是 (n-2) + (n-3) + ... + 1 系列的总和?我不知道如何得到答案n(n-1)(n-2)/6

pjs*_*pjs 5

查看此情况的一种方法是您拥有n值和三个嵌套循环,它们被构造为具有非重叠范围。因此迭代可能是数字等于方式的数量选择从三个独特的值n的项目,或n choose 3= n!/(3!(n-3)!)= n(n-1)(n-2)/3*2*1= n(n-1)(n-2)/6