PY の 两种方法打印杨辉三角
方法一:临数相加等于中间夹值
这个方法是大多数人选择的做法吧,至少从逻辑来看,简单太多
以第三行 L 行为例(首行为0行),L[0] + L[1]、L[1] + L[2]、L[2] + L[3] 分别相加,可以取到下一行相夹的数,但最左和最右的 1 是没有关联到,需要我们自行添加
so,我们用列表生成式打印杨辉三角,如下:
def triangle(lines):L = [1]n = 0while n <= lines:yield LL = [1] + [L[i-1] + L[i] for i in range(1, len(L))] + [1]n = n + 1print_triangle = triangle(8)for line in print_triangle:print(line)>>>
[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]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]
方法二:二项式系数 (恐数者慎翻-.-)
从图中可以看出,杨辉三角与二项式分解后各项的系数,一 一 对应
二项式展开公式:
在此我们只关注二项式系数,可以得知,第 m 项的系数是:
再来温习一遍排列组合中组合的公式:
可以无脑将阶乘以递归形式:
def func(n):output = '1'for m in range(1, n):temp = fact(n) // (fact(m) * fact(n-m))output = output + ' ' + str(temp)return output + ' 1'def fact(n):if n == 1:return 1return n * fact(n - 1)res = func(4)
print(res)>>>
1 4 6 4 1
不过这种折中递归,属于“弟中弟”的写法。
来一种不用递归的方法,观察 的规律有:
最后一个,我们根据规律得出:
用 python 将这个结论体现出来:
def calc(n):output = '1' c = 1for m in range(1, n+1):c = c * (n-m+1) // moutput = output + ' ' +str(c)return outputdef generate_line(lines):n = 0while n <= lines:yield calc(n)n = n + 1print_triangle = generate_line(8)
for line in print_triangle:print(line)>>>
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
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
当然,题目还有更多有趣的解法,如果你有更简单的方法,就留言分享吧~
PY の 两种方法打印杨辉三角相关推荐
- 多种语言多种方法打印杨辉三角(二项式展开式各项系数)
打印杨辉三角&二项式展开式各项系数 C语言实现 法一:数学排列组合公式法 法二:找规律法,二维数组,通俗易懂 法三:法二优化,一维数组 法四:递归 Java实现 Python实现 (a + b ...
- C语言每日一练——第72天:打印杨辉三角(使用两种方法)
C语言每日一练 2022年1月5日 文章目录 题目描述 问题分析 1. 使用数组法(打印直角三角) 2. 使用数组法(打印等腰三角) 3. 使用公式法(打印等腰三角) 网上参考 题目描述 打印杨辉三角 ...
- 打印杨辉三角的9种方法与解析
打印杨辉三角 杨辉三角科普: 杨辉三角,是二项式系数在三角形中的一种几何排列.每个数等于它上方两数之和.如图: C语言打印杨辉三角的方法 解法一 #include <stdio.h> in ...
- C语言打印杨辉三角的多种方法
3.在屏幕上打印杨辉三角. 1 1 1 1 2 1 1 3 3 1 解法一: #define _CRT_SECURE_NO_WARNINGS 1 #include <stdio.h> in ...
- 【笔试题】简单的两道笔试题(1、打印杨辉三角;2、三个数排序)
笔试题 简单的两道笔试题(1.打印杨辉三角:2.三个数排序) 1.打印杨辉三角 import java.util.Scanner; public class MyYanghuiTriangle {pu ...
- 【C语言练习——打印杨辉三角及其变形】
CSDN话题挑战赛第1期 活动详情地址:活动地址 参赛话题:大学学习月/季度总结 话题描述:对自己大学的月/季度学习的复盘及展望 杨辉三角及其变形 前言 1.杨辉三角之左对齐 1.1 写法1 1.2 ...
- Java打印杨辉三角
Java打印杨辉三角 打印杨辉三角首先要理清楚思路,找到其中的规律,,然后通过其中的规律用java循环的方法想办法解决掉.我们通过仔细的观察不难发现杨辉三角除每行最左侧和最右侧的数字外,每个数字等于它 ...
- 杨辉三角c语言编程报告,C语言打印杨辉三角示例汇总
杨辉三角是我们从初中就知道的,现在,让我们用C语言将它在计算机上显示出来. 在初中,我们就知道,杨辉三角的两个腰边的数都是1,其它位置的数都是上顶上两个数之和.这就是我们用C语言写杨辉三角的关键之一. ...
- 用linux编译打印杨辉三角形,C语言打印杨辉三角代码及解析
杨辉三角是我们从初中就知道的,现在,让我们用C语言将它在计算机上显示出来. 在初中,我们就知道,杨辉三角的两个腰边的数都是1,其它位置的数都是上顶上两个数之和.这就是我们用C语言写杨辉三角的关键之一. ...
最新文章
- Spring Framework 5.2 正式发布,14项新特性一览
- 【科学计数法模板讲解】1060 Are They Equal (25 分)
- 测试硬盘读写速度软件_机械硬盘回春:2023年容量破40TB 读写速度媲美SATA SSD
- [下载] Zend studio 8 Windows版
- IIS上部署网站问题总结
- Linux服务器---squid限制
- 数据库中的内连接、自然连接、和外连接的区别
- 计算机生成目录步骤word,word生成目录步骤,word怎样做目录
- 会考计算机考试题,初中信息技术会考试题
- 透视宝移动端对Unity手机游戏引擎监控实现 1
- MySQL中创建时间和更新时间的自动更新
- 计算机毕业设计JAVA图书个性化推荐系统mybatis+源码+调试部署+系统+数据库+lw
- Java学习路线·进阶
- android 水滴动画效果图,Android控件实现水滴效果
- 通过if分支结构计算个人所得税
- 生物老师(搞笑)鼻子和手
- 关于J2EE,J2SE,J2ME
- 浅谈数据库用户表结构设计,第三方登录
- linux-鸟哥私房菜,基础命令全掌握
- 鲍尔默离开后,微软还能东山再起吗?