1. 程式人生 > 實用技巧 >ast入門 (二)

ast入門 (二)

關於楊輝三角,不多說,直接看圖理解

題目:輸入一個數字n(正整數),輸出楊輝三角的前n行。即輸入1,返回上圖第一行:1;輸入2,返回上圖前三行1,1 1;輸入3,返回上圖前三行1,1 1,1 2 1;以此類推。

題目解析:根據圖片我們可知,想要得到結果,我們需要得到每一行結果,然後將每一行結果拼接。而楊輝三角每一行 都由上一行推導而出,每個元素都由前一行與它相鄰的兩個元素相加,結尾拼接1得到。很顯然我們可以使用遞迴函式完成。

# 根據前一列資料得到後一列資料
def func2(arry):
    arr = [1]
    for i in range(len(arry) - 1):
        arr.append(arry[i]
+arry[i+1]) arr.append(1) return arr # 遞迴函式,根據傳入值,輸出對應陣列序列 def func1(n): res_arr = [[1], ] if n <= 1: return res_arr else: return func1(n-1) + [func2(func1(n-1)[-1])]

解析函式:

  func1 為一個遞迴函式,當n=1是直接返回二維列表[[1], ]

    當n>1時,我們用前n-1行資料“func1(n-1)”,拼接第n行資料“func2(func1(n-1)[-1])”

    func2函式返回的是一維列表,在函式外新增“[ ]”,以保持資料型別不變 

    func1(n-1):前n-1行資料,

    func1(n-1)[-1]:第n-1行資料

  func2函式引數為列表,目的是根據前一行資料得到下一行資料。

    arry:前一行資料

    arr:為目標資料(下一行),

    for迴圈遍歷arry,使arry每個資料和下一個資料和相加,將結果拼接到arr中