📜  打印帕斯卡三角形的Python程序

📅  最后修改于: 2022-05-13 01:54:41.375000             🧑  作者: Mango

打印帕斯卡三角形的Python程序

帕斯卡三角形是基于nCr的三角形图案,下面是帕斯卡三角形的图形表示。

例子:

Input: N = 5
Output:
      1
     1 1
    1 2 1
   1 3 3 1
  1 4 6 4 1

方法 1:使用nCr公式,即 n!/(nr)!r!

使用nCr公式后,图形表示变为:

0C0
       1C0   1C1
    2C0   2C1   2C2
 3C0   3C1   3C2    3C3

算法:

  • 取要打印的行数,假设它是 n
  • 使外部迭代 i 从 0 到 n 次以打印行。
  • 对 j 从 0 到 (N – 1) 进行内部迭代。
  • 打印单个空格“”。
  • 关闭内循环(j 循环)//它需要左间距。
  • 对 j 从 0 到 i 进行内部迭代。
  • 打印 i 和 j 的nCr
  • 关闭内循环。
  • 在每次内部迭代后打印字符(\n)。

执行:

Python3
# Print Pascal's Triangle in Python
from math import factorial
 
# input n
n = 5
for i in range(n):
    for j in range(n-i+1):
 
        # for left spacing
        print(end=" ")
 
    for j in range(i+1):
 
        # nCr = n!/((n-r)!*r!)
        print(factorial(i)//(factorial(j)*factorial(i-j)), end=" ")
 
    # for new line
    print()


Python3
# Print Pascal's Triangle in Python
 
# input n
n = 5
 
for i in range(1, n+1):
    for j in range(0, n-i+1):
        print(' ', end='')
 
    # first element is always 1
    C = 1
    for j in range(1, i+1):
 
        # first value in a line is always 1
        print(' ', C, sep='', end='')
 
        # using Binomial Coefficient
        C = C * (i - j) // j
    print()


Python3
# Print Pascal's Triangle in Python
 
# input n
n = 5
 
# iterarte upto n
for i in range(n):
    # adjust space
    print(' '*(n-i), end='')
 
    # compute power of 11
    print(' '.join(map(str, str(11**i))))


输出:

1
     1 1
    1 2 1
   1 3 3 1
  1 4 6 4 1

时间复杂度: O(N 2 )

方法二:我们可以通过下面的二项式系数的概念来优化上面的代码,行号中的第i个条目是二项式系数C(line, i) ,所有行都以值1开始。 思路是计算C(line, i)使用C(line, i-1)

C(line, i) = C(line, i-1) * (line - i + 1) / i

实现:

蟒蛇3

# Print Pascal's Triangle in Python
 
# input n
n = 5
 
for i in range(1, n+1):
    for j in range(0, n-i+1):
        print(' ', end='')
 
    # first element is always 1
    C = 1
    for j in range(1, i+1):
 
        # first value in a line is always 1
        print(' ', C, sep='', end='')
 
        # using Binomial Coefficient
        C = C * (i - j) // j
    print()

输出:

1
     1 1
    1 2 1
   1 3 3 1
  1 4 6 4 1

时间复杂度: O(N 2 )

方法 3:这是打印帕斯卡三角形的最优化方法,该方法基于 11 的幂。

11**0 = 1
11**1 = 11
11**2 = 121
11**3 = 1331

执行:

蟒蛇3

# Print Pascal's Triangle in Python
 
# input n
n = 5
 
# iterarte upto n
for i in range(n):
    # adjust space
    print(' '*(n-i), end='')
 
    # compute power of 11
    print(' '.join(map(str, str(11**i))))

输出:

1
     1 1
    1 2 1
   1 3 3 1
  1 4 6 4 1

时间复杂度: O(N)

然而,这种方法仅适用于 n=5。