首页 > 解决方案 > Python二项式系数混淆

问题描述

好的,所以我们刚刚介绍了循环,而我这几天一直在摸不着头脑,试图弄明白。我正在尝试打印帕斯卡的三角形。我在网上找到了一些简单的代码,我真的能理解!

rows = int(input("Enter the number of rows : "))
for i in range(0, rows):
    coff = 1
    for j in range(1, rows-i):
        print("  ", end="")
    
    for k in range(0, i+1):
        print("  ", coff, end="")
        coff = int(coff * (i - k) / (k + 1))
    print()

然而,他们是如何得到这个公式的呢?coff = int(coff * (i - k) / (k + 1)),我一直在网上搜索他们是如何得出这个结论的,但我仍然找不到任何答案。我了解循环是如何工作的,但我对他们如何获得公式来获得条款感到头疼。帮助表示赞赏!

标签: python

解决方案


对于帕斯卡三角形中的每个位置,值为i Choose k,其中i是行(从第一行的 0 开始),k是行中的位置(也是从 0 开始)。i这里(几乎)与k代码中的变量匹配。

现在,维基百科炫耀这个身份:

在此处输入图像描述

将其转换为您的代码的技巧是在打印coff = int(coff * (i - k) / (k + 1))之后运行coff,因此我们需要将 1 添加到k. 如果您希望代码更接近公式,您可以执行以下操作:

coff = 1
for k in range(1, i+2):
    print("  ", coff, end="")
    coff = int(coff * (i + 1 - k) / k)

推荐阅读