云计算Shell指令之嵌套循环

举报
tea_year 发表于 2024/08/27 10:59:33 2024/08/27
【摘要】 嵌套循环(难点)⭐⭐⭐一个==循环体==内又包含另一个完整的循环结构,称为循环的嵌套。在外部循环的每次执行过程中都会触发内部循环,直至内部完成一次循环,才接着执行下一次的外部循环。for循环、while循环和until循环可以相互嵌套。#算法问题:外层循环90圈,内层循环:90圈,cpu耗费时间:90*90=8100嵌套循环的时候,cpu的时间效率是一个很重要的要考虑的指标!!!demo1:...

嵌套循环(难点)⭐⭐⭐

一个==循环体==内又包含另一个完整的循环结构,称为循环的嵌套。在外部循环的每次执行过程中都会触发内部循环,直至内部完成一次循环,才接着执行下一次的外部循环。for循环、while循环和until循环可以相互嵌套。

#算法问题:

外层循环90圈,内层循环:90圈,cpu耗费时间:90*90=8100

嵌套循环的时候,cpu的时间效率是一个很重要的要考虑的指标!!!


demo1:打印如下图案

1
12
123
1234
12345
​
​
X轴:
for ((i=1;i<=5;i++));do echo -n $i;done
Y轴:
负责打印换行
​
#!/bin/bash
for ((y=1;y<=5;y++))
do
    for ((x=1;x<=$y;x++))
    do
        echo -n $x
    done
echo
done
​
#!/bin/bash
for ((y=1;y<=5;y++))
do
    x=1
    while [ $x -le $y ]
        do
        echo -n $x
        let x++
        done
echo
done


demo2:打印如下图案

5
54
543
5432
54321
​
Y轴:打印换行
X轴:打印数字 5-1
​
#!/bin/bash
y=5
while (( $y >= 1 ))
do
    for ((x=5;x>=$y;x--))
    do
        echo -n $x
    done
echo
let y--
done
​
​
#!/bin/bash
for (( y=5;y>=1;y--))
do
    for (( x=5;x>=$y;x--))
    do
    echo -n $x
    done
echo
done
​
#!/bin/bash
y=5
while [ $y -ge 1 ]
do
    for ((x=5;x>=$y;x--))
    do
    echo -n $x
    done
echo
let y--
done
​
​
#!/bin/bash
y=1
until (( $y >5 ))
do
    x=1
    while (( $x <= $y ))
    do
    echo -n $[6-$x]
    let x++
    done    
echo
let y++
done
​
​
课后打印:
5  4  3
 第一层:5>1  
 第二次:5 4 3 1 少了1个;5-4
------------------------
54321
5432
543
54
5
​


课堂练习:打印九九乘法表(三种方法)

1
12
123
1234
12345
​
for ((y=1;y<=5;y++))
do
    for ((x=1;x<=$y;x++))
        do
        echo -n $x
        done
echo
done
​
1*1=1
​
1*2=2   2*2=4
​
1*3=3   2*3=6   3*3=9
​
1*4=4   2*4=8   3*4=12  4*4=16
​
1*5=5   2*5=10  3*5=15  4*5=20  5*5=25
​
1*6=6   2*6=12  3*6=18  4*6=24  5*6=30  6*6=36
​
1*7=7   2*7=14  3*7=21  4*7=28  5*7=35  6*7=42  7*7=49
​
1*8=8   2*8=16  3*8=24  4*8=32  5*8=40  6*8=48  7*8=56  8*8=64
​
1*9=9   2*9=18  3*9=27  4*9=36  5*9=45  6*9=54  7*9=63  8*9=72  9*9=81
​
​
Y轴:循环9次,打印9行空行
X轴:循环次数和Y轴相关;打印的是X和Y轴乘积 $[] $(())
​
#!/bin/bash
for ((y=1;y<=9;y++))
do
    for ((x=1;x<=$y;x++))
    do
        echo -ne "$x*$y=$[$x*$y]\t"
    done
echo
echo
done
​
​
#!/bin/bash
y=1
while [ $y -le 9 ]
do
        x=1
        while [ $x -le $y ]
        do
                echo -ne "$x*$y=$[$x*$y]\t"
                let x++
        done
echo
echo
let y++
done
​
或者
#!/bin/bash
for i in `seq 9`
do
    for j in `seq $i`
    do
        echo -ne  "$j*$i=$[$i*$j]\t"
    done
echo
echo
done
或者
#!/bin/bash
y=1
until [ $y -gt 9 ]
do
        x=1
        until [ $x -gt $y ]
        do
                echo -ne "$x*$y=$[ $x*$y ]\t"
                let x++
        done
echo
echo
let y++
done
​


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。