给定一个正整数N,打印杨辉三角的前N行
杨辉三角形态如下
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
杨辉三角的每一行第一个和最后一个元素都是1
中间的元素,由上一行的两个元素相加得到,第N行的第index元素
是由第N-1 行的第index-1元素和第index相加得到的
第N行元素,可以由第N-1 行变化而来,这正是递归算法的精髓,把新的问题转化成老的问题,而老的问题转化成更老的问题,最终必然有一个老问题给出答案,然后整个逻辑链条上的问题都有了答案
def print_yanghui(n):
"""
递归算法打印杨辉三角
:param n:
:return:
"""
if n == 1:
print([1])
return [1]
elif n == 2:
print_yanghui(1)
print([1, 1])
return [1, 1] # 这里如果不返回,第三行就无法生成
else:
lst = [1] # 第一个元素
pre_lst = print_yanghui(n - 1) # 得到上一行的元素
# 根据第n -1 行的元素,生成第n行的中间元素
for i in range(len(pre_lst) -1):
lst.append(pre_lst[i] + pre_lst[i+1])
lst.append(1) # 最后一个元素
print(lst)
return lst
if __name__ == '__main__':
print_yanghui(6)
QQ交流群: 211426309