def triangles(x, y): if y == 1 or y == x: # y=1或y=x时,函数返回值为1 return 1 else: z = triangles(x-1, y-1) + triangles(x-1, y) # y为其他值时的递推公式 return z if __name__ == "__main__": n = int(input("请输入杨辉三角的行数:")) for i in range(1, n+1): # 输出n行 for j in range(0, n-i+1): print(" ", end=" ") for j in range(1, i+1): # 调用递归函数,输出第i行的第j个值 print("%6d " %(triangles(i, j)), end=" ") print()运行结果为:
请输入杨辉三角的行数:7 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
# 计算杨辉三角中的数值并存入二维数组a中 for row in range(1, n+1): # 令每行两边的数为1,循环从1开始,每行第一个数存放在a[row][1]中 a[row][1] = a[row][row] = 1 for row in range(3, n+1): for column in range(2, (row-1)+1): # 计算其他位置的值并存入二维数组 a[row][column] = a[row-1][column-1] + a[row-1][column]
for row in range(1, n+1): for k in range(1, (n-row)+1): print(" ", end="")
# 打印杨辉三角形 for row in range(1, n+1): for k in range(1, (n-row)+1): print(" ", end="") # 在每行输出数之前先打印空格占位,使输出更美观 # column<=row表示不输出数组中其他的数,只输出所需的数 for column in range(1, row+1): print("%6d" %(a[row][column]), end=" ") print() # 当一行输出完以后换行继续下一行的输出现在我们就需要把刚才的程序进行组合,构成完整的程序:
if __name__ == "__main__": n = 0 a = [([0] * 14) for i in range(14)] # 定义一个行为14、列为14的二维数组 while n <= 0 or n >= 13: # 控制打印的行数,行数过大会造成显示不规范 n = int(input("请输入杨辉三角的行数:")) print("打印 %d 行杨辉三角如下:" %n) # 计算杨辉三角中的数值并存入二维数组a中 for row in range(1, n+1): # 令每行两边的数为1,循环从1开始,每行第一个数存放在a[row][1]中 a[row][1] = a[row][row] = 1 for row in range(3, n+1): for column in range(2, (row-1)+1): # 计算其他位置的值并存入二维数组 a[row][column] = a[row-1][column-1] + a[row-1][column] # 打印杨辉三角形 for row in range(1, n+1): for k in range(1, (n-row)+1): print(" ", end="") # 在每行输出数之前先打印空格占位,使输出更美观 # column<=row表示不输出数组中其他的数,只输出所需的数 for column in range(1, row+1): print("%6d" %(a[row][column]), end=" ") print() # 当一行输出完以后换行继续下一行的输出运行结果为:
请输入杨辉三角的行数:7 打印 7 行杨辉三角如下: 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
本文链接:http://task.lmcjl.com/news/14264.html