ast入門 (二)
阿新 • • 發佈:2020-08-11
關於楊輝三角,不多說,直接看圖理解
題目:輸入一個數字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中