python实现杨辉三角的3种方法(迭代、生成器和递归)

 更新时间:2023年11月07日 10:18:53   作者:beixi@  
这篇文章主要给大家介绍了关于python实现杨辉三角的3种方法,分别是迭代、生成器和递归的相关资料,杨辉三角形的规则就是每行的第一个数字和最后一个数字为1之外,其余每个数字等于上一行对应两个数字的和,需要的朋友可以参考下

1.杨辉三角介绍:

杨辉三角是一种数学图形,由数字排列成类似三角形的形状。它的每个数值等于它上方两个数值之和。这个三角形的形状可以用一个二维表格来表示,其中每个位置上的数值都是通过前一行的数值计算得到的。在这个三角形中,第一行只有一个数值1,第二行有两个数值1,第三行有三个数值1,以此类推。从第四行开始,除了首尾的1之外,中间的数值是上一行对应位置的两个数值之和。 下面是一些杨辉三角常见的特点和应用:

  • 对称性:杨辉三角以中心轴为对称轴,每行的对称位置上的数值相等。
  • 组合数性质:杨辉三角中的数值可以表示为组合数,例如,第n行第k个数值表示为C(n-1, k-1),即从n-1个物体中选取k-1个的组合数。
  • 幂和性质:杨辉三角的每一行的数值之和都是2的幂,例如,第n行的数值之和为2^(n-1)。
  • 整数序列性质:杨辉三角的每一行对应着一个整数序列,如斐波那契数列、自然数序列等。

杨辉三角不仅仅是一个有趣的数学图形,还有许多实际应用。它在组合数学、概率论、代数等领域都有重要的应用,例如计算二项式的展开系数、解决概率分布问题、生成多项式系数等。
通过编程语言(如Python),可以实现杨辉三角并以可视化的方式显示出来。这样的程序可以逐行计算并输出杨辉三角的数值,从而更好地展示其规律和特点,并可用于相关计算和问题求解。

2.方法一:迭代

代码试例:

def triangle_1(x):
 """
 :param x: 需要生成的杨辉三角行数
 :return:
 """
 triangle = [[1], [1, 1]] # 初始化杨辉三角
 n = 3 # 从第三行开始计数,逐行添加
 while n <= x:
  for i in range(0, n-1):
   if i == 0:
    # 添加初始列表[1,1],杨辉三角每行的首位和末位必为1
    triangle.append([1, 1])
   else:
    # 逐位计算,并插入初始列表中
    triangle[n-1].insert(i, triangle[n - 2][i] + triangle[n - 2][i - 1])
  n += 1
 return triangle
x = 11
triangle = triangle_1(x)
  
# 遍历结果,逐行打印
for i in range(x):
 print(' '.join(str(triangle[i])).center(100)) # 转为str,居中显示

运行结果:

3.方法二:生成器

代码试例:

def triangle_2(n):
 """
 :param n: 需要生成的杨辉三角行数
 :return: 
 """
 triangle = [1] # 初始化杨辉三角
 for i in range(n):
  yield triangle
  triangle.append(0) # 在最后一位加个0,用于计算下一行
  triangle = [triangle[i] + triangle[i - 1] for i in range(len(triangle))]
# 从生成器取值
for i in triangle_2(10):
 print(''.join(str(i)).center(100)) # 格式化输出

运行结果:

4.方法三:递归

杨辉三角特性:

【1,1】=【0,1】+【1,0】
【1,2,1】=【0,1,1】+【1,1,0】
【1,3,3,1】=【0,1,2,1】+【1,2,1,0】
【1,4,6,4,1】=【0,1,3,3,1】+【1,3,3,1,0】

第n行等于第n-1行分别首尾补0,然后按位相加

试例代码:

def triangle_3(n):
 """
 :param n:需要生成的杨辉三角行数
 :return:
 """
 triangle = [1] # 初始化杨辉三角
 if n == 0:
  return triangle
 return [x+y for x, y in zip([0] + triangle_4(n - 1), triangle_4(n - 1) + [0])]
for i in range(10):
 print(''.join(str(triangle_4(i))).center(100))

运行结果:

总结

到此这篇关于python实现杨辉三角的3种方法的文章就介绍到这了,更多相关python实现杨辉三角内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python中对数组集进行按行打乱shuffle的方法

    Python中对数组集进行按行打乱shuffle的方法

    今天小编就为大家分享一篇Python中对数组集进行按行打乱shuffle的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-11-11
  • Python实现基于C/S架构的聊天室功能详解

    Python实现基于C/S架构的聊天室功能详解

    这篇文章主要介绍了Python实现基于C/S架构的聊天室功能,结合实例形式详细分析了Python实现聊天室功能的客户端与服务器端相关实现技巧与操作注意事项,需要的朋友可以参考下
    2018-07-07
  • Python本地cache不当使用导致内存泄露的问题分析与解决

    Python本地cache不当使用导致内存泄露的问题分析与解决

    最近在项目开发中遇到了本地cache不当使用导致的一个内存泄露问题,所以本文主要分析了问题出现的原因已经解决方法,需要的小伙伴可以参考下
    2023-08-08
  • python QT界面关闭线程池的线程跟随退出完美解决方案

    python QT界面关闭线程池的线程跟随退出完美解决方案

    这篇文章主要介绍了python QT界面关闭,线程池的线程跟随退出解决思路方法,本文给大家分享两种方法结合实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-11-11
  • python爬取免费代理并验证代理是否可用

    python爬取免费代理并验证代理是否可用

    这篇文章主要介绍了python爬取免费代理并验证是否可用,通过本文给大家介绍了在什么情况下会用到代理并分享脚本的完整代码,需要的朋友可以参考下
    2022-01-01
  • python for和else语句趣谈

    python for和else语句趣谈

    这篇文章主要介绍了python for和else语句趣谈,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-07-07
  • 一文搞懂关于 sys.argv 的详解

    一文搞懂关于 sys.argv 的详解

    sys.argv 其实就是一个列表,里边需要用户传入的参数,关键就是要明白这参数是从程序外部输入的,而非代码本身的什么地方,要想看到它的效果就应该将程序保存了,从外部来运行程序并给出参数,通过本文学习你将明白 sys.argv很多知识,感兴趣的朋友一起看看吧
    2023-01-01
  • Python urlopen()和urlretrieve()用法解析

    Python urlopen()和urlretrieve()用法解析

    这篇文章主要介绍了Python urlopen()和urlretrieve()用法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 探索Python random模块随机性神奇世界

    探索Python random模块随机性神奇世界

    Python中的random模块提供了丰富的工具和函数,帮助我们生成随机数、操作随机序列,以及模拟随机性事件,在本文中,我们将分享random模块,了解它的基本用法、功能和应用领域,并提供示例代码来帮助你更好地理解随机性的神奇世界
    2023-11-11
  • Python图形化界面基础篇之如何使用弹出窗口和对话框

    Python图形化界面基础篇之如何使用弹出窗口和对话框

    对于Python程序员来说,处理弹出窗口似乎并不是一个常见的任务,这篇文章主要给大家介绍了关于Python图形化界面基础篇之如何使用弹出窗口和对话框的相关资料,需要的朋友可以参考下
    2024-03-03

最新评论