博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
使用脚本打印杨辉三角
阅读量:6543 次
发布时间:2019-06-24

本文共 2274 字,大约阅读时间需要 7 分钟。

杨辉三角,是二项式系数在三角形中的一种几何排列。

 

使用shell 和python 打印杨辉三角,比较差异

shell:

root@virtual:~# cat triangles.sh #!/bin/bash# Author: xieshengsen# 打印数学杨辉三角if (test -z $1) ; thenread -p "Input Max Lines:" MaxelseMax=$1fii=1while [ $i -le $Max ]doj=1while [ $j -le $i ]dof=$[i-1]g=$[j-1]if [ $j -eq $i ] || [ $j -eq 1 ]; thendeclare SUM_${i}_$j=1elsedeclare A=$[SUM_${f}_$j]declare B=$[SUM_${f}_$g]declare SUM_${i}_$j=`expr $A + $B`fiecho -en $[SUM_${i}_$j]" "let j++doneecholet i++doneroot@virtual:~#root@virtual:~# . triangles.sh 101 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 1 9 36 84 126 126 84 36 9 1 root@virtual:~#

  

 

python:

方法一:

[root@cinder01 ~]# cat triangle_v1.py #!/usr/bin/env python# -*- coding: utf-8 -*-# Author:xieshengsen# 使用函数打印杨辉三角"""第一次循环执行 yield L,输出【1】第二次循环执行 yield L 之后的语句 L.append(0)后,L =【1,0】,再执行后面的语句 L = [L[i - 1] + L[i] for i in range(len(L))] 此时L =【1,1】(i=0时 L[- 1] + L[0]为1,i =1时 L[0] + L[1]为1)直到再次遇到yield L语句,输出【1,1】第三次循环执行 yield L 之后的语句 L.append(0)后,L =【1,1,0】,再执行后面的语句 L = [L[i - 1] + L[i] for i in range(len(L))] 此时L =【1,2,1】(i=0时 L[- 1] + L[0]为1,i =1时 L[0] + L[1]为2,i=2时,L[1] + L[2]为1)直到再次遇到yield L语句,输出【1,2,1】"""def triangles(n):L = [1]while True:yield LL.append(0)L = [L[ i - 1 ] + L[i] for i in range(len(L))]if len(L) > n:breakm = triangles(10)for i in m:print (i)[root@cinder01 ~]# python triangle_v1.py [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][1, 9, 36, 84, 126, 126, 84, 36, 9, 1][root@cinder01 ~]#

  

 

方法二:

[root@cinder01 ~]# cat triangle_v2.py #!/usr/bin/env python# -*- coding: utf-8 -*-# Author:xieshengsen"""规律:1、每行开始和结尾都是12、每行的数都是从两边都中间逐步变大(除第一、二行外)3、从第三行开始,每个数都等于上方两个数之和4、第n行有n个项5、每行的数字之和为2的n-1次方(上期写的是n-2)"""def triangles(n):L = [1]while True:yield LL = [L[x]+L[x+1] for x in range(len(L)-1)]L.insert(0,1)L.append(1)if len(L) > n:breaka = triangles(10)for i in a:print (i)[root@cinder01 ~]# python triangle_v2.py [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][1, 9, 36, 84, 126, 126, 84, 36, 9, 1][root@cinder01 ~]#

  

 

转载于:https://www.cnblogs.com/xieshengsen/p/7146637.html

你可能感兴趣的文章
android studio 导入主题设置,代码风格(附带eclipse 主题代码样式)
查看>>
markdown 简单教程
查看>>
二叉树1
查看>>
【leetcode】402. Remove K Digits
查看>>
RESTful API 设计最佳实践
查看>>
用于构建 RESTful Web 服务的多层架构
查看>>
转载C#加密方法
查看>>
eclipse中类和方法添加作者日期说明
查看>>
Python 精要参考(第二版) 第二章 语法及代码约定
查看>>
新学期的合作
查看>>
Beginners MYSQL Database Tutorial# How to install MySQL on Ubuntu
查看>>
PHP之数组学习
查看>>
PHP判断远程文件是否存在
查看>>
JS 转义&反转义 HTML标签、特殊字符
查看>>
KVC集合操作符
查看>>
[转载]ext4文件系统的delalloc选项造成单次写延迟增加的分析
查看>>
Entity Framework 小知识(二)
查看>>
Oracle 18c新特性详解:In-Memory 专题
查看>>
2016年终总结
查看>>
java多线程(thread/runnable)
查看>>