我正在尝试编写一个代码,它接收一个整数“n”作为参数,然后打印从 0、1、..、n 开始的帕斯卡三角形的第 n 行。 例如,如果条目是 3,则程序打印 1 3 3 1。 到目前为止,我写了一个代码来打印整个三角形,但我不能只打印最后一行。 这是我的
echo "Insert the row:" read n for((i=0;i<$n;i++))
do
eval"a$i=($(w=1;v=1
for((j=0;j<$n-$i;j++))
do
[ $i -eq 0 -o $j -eq 0 ]&&{ v=1 && w=1; }||v=$((w+a$((i-1))[$((j))]))
echo -n "$v "
w=$v
done))"
eval echo "$(for((k=0;k<=$i;k++))
do
eval "echo -n \"\$((a\$((i-k))[k])) \""
done)"
done
最佳答案
#!/bin/bash
read -p "Insert the row:" n
typeset -A Tab
for((i=0;i<=$n;i++))
do
Tab[$i,0]=1
Tab[$i,$i]=1
for((j=1;j<$i;j++))
do
a=${Tab[$((i-1)),$((j-1))]}
b=${Tab[$((i-1)),$j]}
Tab[$i,$j]=$(( a + b ))
done
done
#print result
for((j=0;j<=$n;j++))
do
echo -n ${Tab[$n,$j]} " "
done
echo
测试:
Insert the row:3
1 3 3 1
关于linux - Linux shell 脚本中的 Pascal 三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33290818/