帕斯卡';Linux shell脚本中的s三角形
我试图编写一个代码,它接收一个整数“n”作为参数,然后从0,1,…,n开始打印Pascal三角形的第n行。 例如,如果条目为3,程序将打印1 3 1。 到目前为止,我写了一个代码来打印整个三角形,但我不能只打印最后一行。 这就是我所拥有的帕斯卡';Linux shell脚本中的s三角形,linux,bash,shell,pascals-triangle,Linux,Bash,Shell,Pascals Triangle,我试图编写一个代码,它接收一个整数“n”作为参数,然后从0,1,…,n开始打印Pascal三角形的第n行。 例如,如果条目为3,程序将打印1 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
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
echo”插入行:“为((i=0;i我找到了该问题的awk
解决方案:
awk -v line_num=5 'BEGIN{for(i=line_num;i<=line_num;i++){c=1;r=c;for(j=0;j<i;j++){c*=(i-j)/(j+1);r=r" "c};print r}}'
awk-v line_num=5'BEGIN{for(i=line_num;i下面是一个简单的bash脚本,使用simple for、if else和echo命令打印pascal的三角形:
echo "Enter number of rows : "
read rows
coef=1
for((i=0;i<rows;i++))
do
for((space=1;space<=rows-i; space++))
do
echo -n " "
done
for((j=0;j<=i;j++))
do
if [ $j -eq 0 -o $i -eq 0 ]
then
coef=1;
else
coef=$((coef*(i-j+1)/j))
fi
echo -n $coef " "
done
echo
done
echo“输入行数:”
读行
系数=1
对于((i=0;ii)如果您只需要最后一行,为什么不使用二项式展开的公式?@ChristopherSchultz否,代码没有按预期工作,因此不适合代码复查
awk -v line_num=5 'BEGIN{for(i=line_num;i<=line_num;i++){c=1;r=c;for(j=0;j<i;j++){c*=(i-j)/(j+1);r=r" "c};print r}}'
echo "Enter number of rows : "
read rows
coef=1
for((i=0;i<rows;i++))
do
for((space=1;space<=rows-i; space++))
do
echo -n " "
done
for((j=0;j<=i;j++))
do
if [ $j -eq 0 -o $i -eq 0 ]
then
coef=1;
else
coef=$((coef*(i-j+1)/j))
fi
echo -n $coef " "
done
echo
done