shell编程-杨辉三角简单实现

shell编程-杨辉三角问题:

概述:
中国古代数学家在数学的许多重要领域中处于遥遥领先的地位。中国古代数学史曾经有自己光辉灿烂的篇章,
而杨辉三角的发现就是十分精彩的一页。
杨辉三角形,是二项式系数在三角形中的一种几何排列。
杨辉三角图:

shell编程-杨辉三角简单实现
杨辉三角性质:
1、每行数字左右对称,由1开始逐渐变大,然后变小,回到1。
2、第n行的数字个数为n个。
3、第n行数字和为2^(n-1)。(2的(n-1)次方)
4、每个数字等于上一行的左右两个数字之和。
5、将第2n+1行第1个数,跟第2n+2行第3个数、第2n+3行第5个数……连成一线,这些数的和是第2n个斐波那契数。将第2n行第2个数,跟第2n+1行第4个数、第2n+2行第6个数……这些数之和是第2n-1个斐波那契数。
6、第n行的第1个数为1,第二个数为1×(n-1),第三个数为1×(n-1)×(n-2)/2,第四个数为1×(n-1)×(n-2)/2×(n-3)/3…依此类推。
7.两个未知数和的n次方运算后的各项系数依次为杨辉三角的第(n+1)行。

思路:
因为使用过Java及C通过二维数组的方式可以轻松实现。
但是shell只有一维数组和关联数组,如何才能实现呢?–>通过下标区分元素。

shell编程-杨辉三角简单实现
如上图,把元素下标看成i,j
j=0 或者 i=j的时候,元素的值即为1

代码:

#!/bin/bash
MAX=0
#如何启动脚本时没指定最大行数就提示用户输入
#并判断是否为整数 expr
flag=true
read -p "Please input a number:" MAX
while $flag;do
expr $MAX+0 &> /dev/null
[ $? -eq 0 ] && flag=flase || read -p "Please input a interger:"MAX
done

declare -a num
for(( i=0;i<max;i++ 0 ));do #打印每行杨辉三角 for(( j="0;j<=i;j++" if [ $j -eq -o $i ];then num[$i$j]="1" else let ii="i-1" jj="j-1" fi done #打印杨辉三角 关联数组 echo -e "${num[$i$j]} \t\c" < code></max;i++>

结果:

shell编程-杨辉三角简单实现
测试OK,暂时想到这种比较简单的实现方法,后续如果有好的方法再更新。

总结:
这个脚本难度一般,但是包含大量的shell基本语法,主要是回顾学习数组和嵌套循环的使用。
PS:不得不吐槽一句,shell真心不适合处理复杂运算,并且符号太多,很容易出错,调试就浪费了很多时间。

Original: https://www.cnblogs.com/cn-leoblog/p/15591227.html
Author: Leo’sblog
Title: shell编程-杨辉三角简单实现

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/582702/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【证券从业】金融基础知识-第四章 股票03

    注1:后续学习并整理到第八章,全书完结后再合并成一个笔记进行源文件分享 注2:本章内容巨多,大约分为三篇文章记录消化 posted @2022-06-08 01:28 陈景中 阅读…

    Linux 2023年6月13日
    093
  • 网络扫描(二)

    免责声明:本文所述工具只用于网络安全的学习与研究。严禁任何阅读本文的读者利用本文所述工具进行违法犯罪活动。如有任何法律纠纷本文作者概不负责。 上一篇博文讲到了fping工具和nma…

    Linux 2023年6月14日
    088
  • [ Python ] PyQt5 PySide2 笔记

    https://www.cnblogs.com/yeungchie/ PyQt5 from PyQt5.QtWidgets import * from PyQt5.QtCore i…

    Linux 2023年6月7日
    088
  • Haproxy

    Haproxy Haproxy haproxy简介 负载均衡 Haproxy搭建http负载均衡 lvnanhai、RS1、RS2都关闭防火墙和selinux RS1和RS2部署h…

    Linux 2023年6月6日
    087
  • 【微信篇】电脑版微信的照片视频文件位置变化

    新版的微信视频图片更新了位置,感觉有好有坏吧,好的方面就是以后查找视频、图片、文档等可能更方便;不好就是越更新占用体积越大,还多很多数据,不懂是否流氓?!—【蘇小沐】 …

    Linux 2023年6月13日
    0117
  • Linux基础和命令

    Linux的哲学思想 优势 一切都是一个文件。(包括硬件,文本,二进制,源代 码) 系统中拥有小型,单一用途的程序。(一个程序只负责 做好自己的本职工作) 当遇到复杂任务,通过不同…

    Linux 2023年6月6日
    086
  • linux命令技巧

    linux命令文件夹处理: 1.cp 命令复制,修改名称(没有修改名称的直接命令,通过复制来修改名称)。 一般的命令很简单,cp -r dir1 /dir/ 这个命令是复制目录di…

    Linux 2023年6月13日
    092
  • 投票活动进行中!探讨问题:从互联网大量收集学习资料再包装成产品售卖盈利是否属于侵权违法?

    写在开篇 今天不聊某项技能的知识点,我们聊点别的。那么,到底聊啥好呢?笔者想想… 有了,这两天笔者从一个微信公众号中发现一个非常恶劣的营销行为。事情大概背景是这样的:运…

    Linux 2023年6月7日
    075
  • Linux中CentOS 7版本安装JDK、Tomcat、MySQL、lezsz、maven软件详解

    软件安装 在Linux系统中,安装软件的方式主要有四种,这四种安装方式的特点如下: 安装方式 特点 二进制发布包安装 软件已经针对具体平台编译打包发布,只要解压,修改配置即可 rp…

    Linux 2023年6月6日
    0100
  • iostream 未完

    声明控制从标准流读取和写入到标准流的对象。 通常是唯一需要从 C++ 程序执行输入和输出的标头。 #include <iostream></iostream&gt…

    Linux 2023年6月7日
    058
  • k8s之部署metrics-server 转载

    Metrics Server是Kubernetes内置自动缩放管道的可扩展,高效的容器资源指标来源。 Metrics Server从Kubelet收集资源指标,并通过Metrics…

    Linux 2023年6月14日
    076
  • 以Docker方式安装Redis集群

    以 Redis-6.0.6 为例,先从仓库将镜像拉下来: docker pull redis:6.0.6 Redis 的配置文件和数据文件不能放在镜像中,这里选择容器中的目录和宿主…

    Linux 2023年5月28日
    061
  • 5.5 Vim移动光标命令汇总

    Vim 文本编辑器中,最简单的移动光标的方式是使用方向键,但这种方式的效率太低,更高效的方式使用快捷键。 Vim 移动光标常用的快捷键及其功能如下面各表所示,需要注意的是,表中所有…

    Linux 2023年6月7日
    095
  • k8s/kubeadm 生产环境高可用集群部署

    kubeadm 生产环境集群部署 基本环境配置 kubeadm 安装方式自 1.14 版本以后,安装方法几乎没有任何变化,此文档可以尝试安装最新的 k8s 集群, centos 采…

    Linux 2023年6月14日
    092
  • mysql select语句查询流程是怎么样的

    mysql select查询的数据是查询内存里面,如果没有查询的数据没有在内存,就需要mysql的innodb引擎读取磁盘,将数据加载的内存后在读取。这就体现了,mysql查询大量…

    Linux 2023年6月8日
    086
  • [Git专题] 环境搭建

    环境搭建 在正式使用 Git 之前,首先应当安装 Git 并完成一些基础配置,本章内容就教大家在 Ubuntu 和 CentOS 上安装 Git 的方法。 如果你使用的是基于 De…

    Linux 2023年6月14日
    069
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球