博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
shell脚本实现杨辉三角形
阅读量:6824 次
发布时间:2019-06-26

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

根据杨辉三角形的每行元素第一位与最后一位都是1,且每个数等于它上方两数之和,且每行元素数等于行数。利用这些规律,我们很简单的就可以把杨辉三角形实现出来了!

我的想法是用二个数组,循环相互根据对方元素来对自己的元素进行赋值,且首尾都为1
shell脚本实现杨辉三角形
好吧!讲的比较乱,希望你可以看的懂,下面是代码实现

#!/bin/bash    declare -a triangle    declare -a triangleTwo    #给数组的第一个元素赋值    triangle[0]=1    triangleTwo[0]=1    #立flag,用于循环中轮流执行某代码段    flag=true    #先打印triangle数组的1    echo $triangle    #先来用一个5行的杨辉三角形    for ((i=1;i<$1;i++)); do        #利用if else语句来循环轮流执行的代码段        if $flag; then            #把triangle的元素个数取出来,再利用它来进行下面的循环次数            numbers=${#triangle[*]}            #给最后一个字符赋值为1            triangleTwo[$numbers]=1            #根据triangle的长度,来确定循环赋值执行的次数            for ((x=1;x<=${numbers};x++));do                #triangleTwo的值来处于triangle的相邻两位元素                triangleTwo[x]=$((triangle[$[x-1]]+triangle[x]))            done            #打印triangleTwo数组            echo ${triangleTwo[*]}            #更改fla  g,做到循环执行代码段的效果            flag=false        else            numbers=${#triangleTwo[*]}            triangle[$numbers]=1            for ((x=1;x<=${numbers};x++));do                triangle[x]=$((triangleTwo[$[x-1]]+triangleTwo[x]))            done            echo ${triangle[*]}             flag=true            fi      done

这样还不太够,我们还可以做到让用户输入行数,从而打印对应的行数

#!/bin/bashYangHuiTriangle (){    declare -a triangle    declare -a triangleTwo    #给数组的第一个元素赋值    triangle[0]=1    triangleTwo[0]=1    #立flag,用于循环中轮流执行某代码段    flag=true    #先打印triangle数组的1    echo $triangle    #先来用一个5行的杨辉三角形    for ((i=1;i<$1;i++)); do        #利用if else语句来循环轮流执行的代码段        if $flag; then            #把triangle的元素个数取出来,再利用它来进行下面的循环次数            numbers=${#triangle[*]}            #给最后一个字符赋值为1            triangleTwo[$numbers]=1            #根据triangle的长度,来确定循环赋值执行的次数            for ((x=1;x<=${numbers};x++));do                #triangleTwo的值来处于triangle的相邻两位元素                triangleTwo[x]=$((triangle[$[x-1]]+triangle[x]))            done            #打印triangleTwo数组            echo ${triangleTwo[*]}            #更改fla  g,做到循环执行代码段的效果            flag=false        else            numbers=${#triangleTwo[*]}            triangle[$numbers]=1            for ((x=1;x<=${numbers};x++));do                triangle[x]=$((triangleTwo[$[x-1]]+triangleTwo[x]))            done            echo ${triangle[*]}             flag=true            fi    done}while true; do     read -p "Please enter the number of elements(or input q to quit):" line    [ "$line" == q ] && break    if [[ $line =~ ^[0-9]+$ ]]; then        YangHuiTriangle $line    else        echo "Please input correct number."    fidone

执行结果:

shell脚本实现杨辉三角形
Okay!大功告成!
如果作者有错误或者需要改进的地方请留言告知哦!

转载于:https://blog.51cto.com/14233913/2374755

你可能感兴趣的文章
Kafka的Consumer负载均衡算法
查看>>
换个姿势学数学:二次函数与拆弹部队
查看>>
React-事件机制杂记
查看>>
演示:如何编译tbox
查看>>
分享插件
查看>>
线性插值针对位置量和角度量
查看>>
JBPM4或Activiti5的流程任务分发与汇总
查看>>
android4.0 在ubuntu10.04(64位)上的下载与编译
查看>>
记一次在 Linux 上创建 Django 应用的过程
查看>>
翻译WifiConfiguration类
查看>>
伍雨霏-懂游戏的云服务如何保驾护航
查看>>
Lua-5.3.2 安装 luasocket 的正确姿势
查看>>
MFC界面库BCGControlBar v25.1新版亮点四:网格控件等
查看>>
ssh 连接非22端口服务器的方法:
查看>>
Linux基础入门
查看>>
org.hibernate.hql.internal.ast.QuerySyntaxException: user is not mapped
查看>>
图解排序算法之快速排序-双端探测法
查看>>
mysql
查看>>
11月15日云栖精选夜读:分布式服务框架Dubbo疯狂更新!阿里开源要搞大事情?...
查看>>
Druid数据库连接池就这么简单
查看>>