列印楊輝三角(1)

丿Flipped.發表於2020-11-01

使用遞迴演算法列印楊輝三角(小白第二次寫部落格)

    '''列印如圖所示楊輝三角
                       1
                     1   1
                   1   2   1
                 1   3   3   1
               1   4   6   4   1
             1   5  10  10   5   1
           1   6  15  20  15   6   1
         1   7  21  35  35  21   7   1
       1   8  28  56  70  56  28   8   1
     1   9  36  84 126 126  84  36   9   1
   1  10  45 120 210 252 210 120  45  10   1
'''
###########################以下采用遞迴方法去完成############
'''先考慮不列印每行前空格時的楊輝三角
   1
   1   1
   1   2   1
   1   3   3   1
   1   4   6   4   1
   1   5  10  10   5   1
   1   6  15  20  15   6   1
   1   7  21  35  35  21   7   1
   1   8  28  56  70  56  28   8   1
   1   9  36  84 126 126  84  36   9   1
   1  10  45 120 210 252 210 120  45  10   1
   把每一行寫成一個函式yh(n),每一列的結果是一個列表,有n個元素   
   考慮yh(n)和yh(n-1)的關係
   對於yh(n)列表的第0個元素和n-1個元素,即yh(n)[0],yn(n)[n]值為1
   其它元素則yh(n)[i]=yh(n-1)[i-1]+yh(n-1)[i]
   '''
def yh(n):
    if n == 0:
        return [1]
    elif n == 1:
        return [1, 1]
    else:
        re = []
        for i in range(n+1):
            if i == 0 or i == n:
                re.append(1)
            else:
                re.append(yh(n-1)[i-1] + yh(n-1)[i])
        return re
#列印
n=9
for x in range(0, n+1):
    print("  "*(n-x), end="")
    for y in yh(x):
        print('%4d'%y, end="")
    print()


相關文章