shell腳本實現楊輝三角形
阿新 • • 發佈:2019-04-06
pre dfa please oss elements 更改 one 留言 proc 根據楊輝三角形的每行元素第一位與最後一位都是1,且每個數等於它上方兩數之和,且每行元素數等於行數。利用這些規律,我們很簡單的就可以把楊輝三角形實現出來了!
我的想法是用二個數組,循環相互根據對方元素來對自己的元素進行賦值,且首尾都為1
好吧!講的比較亂,希望你可以看的懂,下面是代碼實現
我的想法是用二個數組,循環相互根據對方元素來對自己的元素進行賦值,且首尾都為1
好吧!講的比較亂,希望你可以看的懂,下面是代碼實現
#!/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/bash YangHuiTriangle (){ 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." fi done
執行結果:
Okay!大功告成!
如果作者有錯誤或者需要改進的地方請留言告知哦!
shell腳本實現楊輝三角形