双层循环听到整个名字相必大家们并不陌生,有点语言基础的都知道就是在循环里面在嵌套一层循环。下面我会通过九九乘法口诀表的例子来详细解析双层循环。

例题如下
通过for循环来实现九九乘法表:

#!/bin/bash/

for((i=1; i<=9; i++))
do
        for((j=1; j<=i;j++))
        do

        sum=$[ $i * $j ]
        echo -ne  "$i*$j=$sum\t"
        done
echo ""
done

java双层for循环性能优化 for双层循环详解_bash


java双层for循环性能优化 for双层循环详解_java双层for循环性能优化_02


不难发现上述代码可以轻而易举的实现九九乘法表。

通过while来实现九九乘法表

i=1
while [ $i -le 9 ]
do
                j=1
        while [ $j -le $i ]
        do
                sum=$[ $i * $j ]
                echo -ne "$i*$j=$sum\t" 
                let j++
        done
        let i++
echo ""
done

java双层for循环性能优化 for双层循环详解_shell_03


java双层for循环性能优化 for双层循环详解_java双层for循环性能优化_04


不难发现while双层循环代码也可以轻而易举的实现九九乘法表。

上述举例两种类型的代码实现。不难发现其实双层循环的意思就是先执行一次外层循环,然后在进行内层循环,内层循环结束之后,在进行第二次的外层循环,然后内层循环继续执行到结束之后在开始进行下一次的外层循环,以此内推,这就是双层循环的本质了。

下面我们会通过一系列的例子来让带火们感受一下双层循环的快乐。

例题1: 通过代码实现矩形。(可自由定义层数)

#!/bin/bash/
read -p "请输入矩形的长:" length
read -p "请输入矩形的宽:" weigth
for((i=0; i<weigth; i++))
{
        for((j=0; j<length; j++))
        {
                echo -n "*"
        }
echo ""
}

java双层for循环性能优化 for双层循环详解_java双层for循环性能优化_05

java双层for循环性能优化 for双层循环详解_bash_06

例题2: 通过代码实现直角三角形。(可自由定义层数)

#!/bin/bash/
read -p "请输入三角形的高度:" length
for ((i=0; i<length; i++ ))
{
        for ((j=0; j<=i; j++))
        {
                echo -n  "*"
        }
echo ""
}

java双层for循环性能优化 for双层循环详解_i++_07


java双层for循环性能优化 for双层循环详解_bash_08


例题3: 通过代码实现等腰三角形。(可自由定义层数)

#!/bin/bash/
read -p "请输入您需要实现的行数:" line
for ((i=1; i<=line; i++))
do
        for((j=line-1; j>=i; j--))
        do
                echo -n " "
        done
        k=$[2*i -1]
        for ((n=0; n<k; n++))
        do
                echo -n "*"
        done
        echo ""
done

java双层for循环性能优化 for双层循环详解_java双层for循环性能优化_09


java双层for循环性能优化 for双层循环详解_i++_10


例题4: 通过代码实现菱形。(可自由定义层数)

#!/bin/bash/
read -p "请输入您需要实现的行数:" line
for ((i=1; i<=line; i++))
do
        for((j=line-1; j>=i; j--))
        do
                echo -n " "
        done
        k=$[2*i -1]
        for ((n=0; n<k; n++))
        do
                echo -n "*"
        done
        echo ""
done
for ((i=line-1; i>=1; i--))
do
        for ((j=line-1; j>=$i; j-- ))
        do
                echo -n " "
        done
        for ((n=1; n<=2*i-1; n++))
        do
                echo -n "*"
        done
        echo ""
done

java双层for循环性能优化 for双层循环详解_java双层for循环性能优化_11


java双层for循环性能优化 for双层循环详解_编程语言_12